2017-05-26 83 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会自动完成/停止,并且我将遇到此方法的问题! –