任何人都可以告诉我,从应用程序屏幕打开应用程序和从最近使用的应用程序列表打开应用程序之间的区别是什么,当您长按主页按钮时弹出?
我甚至不知道最近使用的列表存在,直到一个朋友设法通过从那里启动它来破坏我的应用程序.他尝试了两次同样的力量戒烟,但是当他从应用程序屏幕上启动它时,它打开了.
错误日志告诉我,在我的ListView的ArrayAdaptor上的getCount方法中发生了一个nullPointerException.
无论如何,我只是想知道是否有区别,我需要知道和适应我的代码来处理?
解决方法
AFAIK,如果您的应用程序完全关闭,从应用程序屏幕启动,最近使用的应用程序列表应该没有什么不同,刷新启动应用程序并打开应用程序的MainActivity(通过将应用程序的MainActivity堆叠到新创建的任务中)
但是,由于Android是多任务操作系统,您的应用程序可以在待机模式下进入后台,即打开应用程序,然后短按主屏幕按钮,这与按下按钮不同.如果您没有在应用程序中按下这些按键,请按返回按钮多次,将所有活动从活动堆栈中移除,并最终杀死您的应用程序,而按住主页按钮将使系统的HomeActivity进入前台,从而翻转应用程序(AKA.任务与活动堆栈)到后台.
事情在这里变得更加有趣,取决于您在AndroidManifest.xml中配置您的活动的android:launchMode的价值,如果您使用standard或singleTop:
1.从最近使用的应用程序列表中启动应用程序始终将待机活动返回到前台,即重新排序活动堆栈.
2.从应用程序屏幕启动应用程序将创建一个新的MainActivity实例并将其打开,即将新创建的MainActivity推入活动堆栈,因此现在您的应用程序的活动堆栈中有两个实例
如果您使用singleTask或singleInstance:
2.从应用程序屏幕启动应用程序将使用您的应用程序活动堆栈中的备用MainActivity(如果存在)并重新打开它,即重新排序活动堆栈.
结帐Tasks and Back Stack了解不同的配置可能会如何影响应用程序的活动堆栈行为.