2017-05-26 103 views
0

我有4個活動:如何在Android設備的屏幕解鎖時重新啓動活動?

  • FirstActivity - 它顯示在程序的第一次運行
  • MainActivity
  • SeconActivity
  • ThirdActivity

我想告訴FirstActivity當電源按鈕點擊並且用戶解鎖他/她的手機。但我怎麼能處理它,後顯示FirstActivity BackgroundActivity再次顯示。 我該怎麼做?

例如在MainActivity

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 
     Intent checkingIntent=new Intent(getApplicationContext(),FirstActivity.class); 
     checkingIntent.putExtra("checking",true); 
     startActivity(checkingIntent); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

和FirstActivity

public boolean checking() { 
    checking_FOR_bankInfo= getIntent().getExtras().getBoolean("checking"); 
    if (checking_FOR_bankInfo){ 
     ... 
    } 
    return cdo_state; 
} 
+0

把你如何重新開始'FirstActivity'的代碼。 –

+0

我不知道該怎麼做 –

+0

'startActivity(checkingIntent)'''這個添加'finish();'到你的代碼並嘗試它。 –

回答

1

嘗試下面的代碼在每一個活動的onPause()方法:

@Override 
protected void onPause() { 
    super.onPause(); 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    boolean screenOn; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     screenOn = pm.isInteractive(); 
    } else { 
     screenOn = pm.isScreenOn(); 
    } 
    if (!screenOn) { //Screen off by lock or power 
     Intent checkingIntent = new Intent(this, FirstActivity.class); 
     checkingIntent.putExtra("checking",true); 
     checkingIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     startActivity(checkingIntent); 
     finish(); 
    } 
} 
+0

它的作品!非常感謝。 –

+0

請給我一些關於「Flag」的信息。 –

+0

接受這個答案。 –

-1
@Override 
    protected void onStop() 
    { 
     super.onStop(); 
     Log.d(tag, "MYonStop is called"); 
     // insert here your instructions 
     // you can call new activity here. 


    } 
當按下按鈕HOME所述的onStop()方法被調用

+0

電源/鎖定按鈕如何?也例如如果我開始BActivity,AActivity會自動完成/停止,並且我將遇到此方法的問題! –