我有一项活动,在启动时,需要检查用户是否经过身份验证。如果没有,我需要显示一个接口进行身份验证。我使用另一个具有对话框主题的活动执行此操作,然后在onResume()中使用标志NO_HISTORY和EXCLUDE_FROM_RECENTS启动它。
第一次启动应用程序时,一切正常。但是我有一个功能,如果用户不在活动中,则会在一段时间后重置登录。当我测试这个时,我开始申请,输入密码,然后回到家。然后,当我再次进入应用程序时,背景会变暗,就好像对话框会显示一样,但事实并非如此。
此时,如果按下后退按钮,背景活动中的变暗会消失一秒钟,最后会出现对话框。
我使用logcat来调查这个案例,并且正确调用了活动生命周期函数:
//For the first start:
onCreate background activity
onStart background activity
onResume background activity
onPause background activity
onCreate dialog
onStart dialog
onResume dialog
//Enter password
onPause dialog
onResume background activity
onStop dialog
onDestroy dialog
//navigating to homescreen
onPause background activity
onStop background activity
//starting again
onRestart background activity
onStart background activity
onResume background activity
onPause background activity
onCreate dialog
onStart dialog
onResume dialog
//no dialog shown, only darkened background activity recieving no input
//pressing back button
onPause dialog
onResume background activity
onPause background activity
onCreate NEW dialog
onStart NEW dialog
onResume NEW dialog
onStop OLD dialog
onDestroy OLD dialog
//now the dialog is properly shown
//entering password
onPause NEW dialog
onResume background activity
onStop NEW dialog
onDestroy NEW dialog
使用SINGLE_TOP标志不做任何更改。但是,如果我从对话框活动中删除对话框主题,则会在重新启动后显示它。
到目前为止,我不想使用Dialog而不是Activity,因为我认为它们有时会出现问题而且封装较少,而且这部分必须非常安全。你或许可以说服我..
提前谢谢!