我的Android应用程序存在一些问题。当应用程序从后台到前台时,Android会从我的任务中杀死我的Root活动。
当我第一次启动时,启动器启动我的SplashScreen Activity来执行一些身份验证,并将用户重定向到LoginActivity或HomeActivity。
如果用户经过正确的身份验证,我会使用以下标志启动HomeActivity:Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK
。
之后,用户可以根据需要进行导航,所有startActivity
都使用intent
和launchMode
的默认配置,没有什么特别的。
所以,让我们说我们正在完成这项任务:
HomeActivity> UserActivity> FollowerActivity
此时,我点击主页按钮开始打开新的应用程序,如Facebook,Instagram,Slack,Skype,Twitter。然后终于从Button" Recent Apps"回到我的应用程序。应用程序显示任务中的最后一个活动 - > FollowerActivity。 但是,如果我点击后退按钮,而不是转到UserActivity,应用程序将关闭。 Android杀死了我之前的两个活动,HomeActivity和UserActivity。
在我的AndroidManifest中,HomeActivity有以下选项:
android:alwaysRetainTaskState="true"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
我尝试了一切,但我的Root Activity是HomeActivity被杀死了。
我不知道该怎么做,我尝试使用Intent的所有旗帜以及我可以放在<activity />
的所有参数。
我还使用OnSaveInstanceState()
在每个活动和片段中保存状态,从原始类型开始到可序列化对象的arraylist。
您知道如何解决我的问题吗?
编辑1:
当我开始在堆栈中有很多活动时,我得到Java Binder Transaction。我想我将可序列化对象的列表保存到我的Bundle savedInstanceState
中。
它可能是我的堆栈中被杀活动的原因吗?