问题描述
- android中Activity的singletask模式弹出栈的问题
-
07-14 17:48:53.218: E/First(8272): onDestroy
07-14 17:48:53.226: E/Second(8272): onDestroy
07-14 17:48:53.226: E/Third(8272): onPause
07-14 17:48:53.250: E/MAIN(8272): onRestart
07-14 17:48:53.250: E/MAIN(8272): onStart
07-14 17:48:53.250: E/MAIN(8272): onResume
07-14 17:48:53.335: E/Third(8272): onStop
07-14 17:48:53.335: E/Third(8272): onDestroyMain是singletask启动模式
顺序是Main->First->Second->Third->Main再次启动Main把上面的activity全部弹出,按照栈先进后出的结构,不是应该从Third开始到First,怎么是反过来的。
解决方案
按back键的话,肯定是按照入栈顺序出栈
但是你现在是相当于启动一个新的activity,但是由于activity是singletask模式,所以系统会先检查是否已经有实例,
发现有,然后就把实例之上的统统出栈,之保证出栈,没保证出栈要按照入栈的顺序
解决方案二:
楼上正解,如果Activity指定的启动方法为android:launchMode="singleTask"。
当实例化MyActivity时候,系统会检测是否有MyActivity实例的存在,如果有不在生成新的实例,而是在此栈中将MyActivity上面的Activity实例全部出栈。将MyActivity实例置于栈顶,显示到屏幕前面。
时间: 2024-12-25 04:35:46