onCreate()中:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
应用会走的是resume->pause->stop->resume,
按照AMS的逻辑
是否sleep只判断两个:是否锁屏、是否黑屏。
当activity起来的时候,屏是亮的了,唯一就剩下锁屏这个条件了。
在onStop里做清除的工作,可以放到onDestroy里。
为甚会resume然后pause,stop呢。
AMS会判断锁屏与黑屏,这两者之一都会满足的话,就认为是该把activity进入sleep。
sleep就是将所有的activity都pause然后stop掉。
也就是你在onStop中可能有finish()这样的方法调用。要去掉。
onStop()中:
//When show alarmalert on lockscreen, AlarmAlert will go to onStop(), so it flush even though
//set FLAG_SHOW_WHEN_LOCKED, so on lockscreen return directly. 20130402, gwb.KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
if (keyguardManager.isKeyguardLocked() && !mIsStoppedByAMSOnce) {
mIsStoppedByAMSOnce = true;
return;
}