gpt4 book ai didi

java - 应用程序在 1 小时后失去当前 Activity

转载 作者:行者123 更新时间:2023-11-30 04:00:16 26 4
gpt4 key购买 nike

我的应用程序非常简单,我有一些 Activity (LoginActivity,它是启动器和主要 Activity )。然后我有一些其他 Activity ,最后是启动服务的 Activity RouteActivity

LocationService 通过通知扩展了 ServicestartForeground。该服务只是启动一个 LocationListener 并注册每个新的 GPS 定位点。该服务似乎工作得很好,如果我触摸通知图标,它会将我带回到我的应用程序 Activity 开始的地方(而不是从登录 Activity )。

现在问题来了,如果我触摸应用程序图标(在 Android 启动器上),它有时会将我的应用程序启动到正确的当前 Activity RouteActivity,但大约 1 小时后,如果我触摸应用程序图标 它只是从头重新启动应用程序并启动 LoginActivity

但是如果我触摸我的服务通知,如果让我回到正确的后台 Activity 。我的服务也没有被杀死,从来没有,所以它似乎工作得很好,与应用程序相关的对象和变量仍然存在。

那又怎样?我有 2 个正在运行的应用程序实例?我有点迷失在这个问题上,尤其是它似乎与时间有关。

这个“错误”是在 Android 2.X 上产生的,我无法在 Android 4.X 上重现它。调试起来有点困难,因为我必须让应用程序运行大约 1 小时。在那之后,我在 logcat 中没有任何特殊消息。

我注意到了一些事情:ActivityManager 消息很奇怪,如果我通过通知中心的服务通知启动我的应用程序,它会记录:

开始 Activity :Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x14000000 cmp=com.wayzup.wayzupapp/com.wayzup.activity.RouteActivity bnds =[0,149][320,213]

虽然如果我通过它记录的应用程序图标启动它,但显示的实际 Activity 不是登录 Activity ,而是实际启动服务的实际 RouteActivity。 (大约 1 小时后,实际上是启动了 LoginActivity)。

 Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.wayzup.wayzupapp/com.wayzup.activity.LoginActivity bnds=[3,338][77,417] 

每次我启动 RouteActivity 时我也会有这个日志

Activity idle timeout for HistoryRecord{44e78808 com.wayzup.wayzupapp/com.wayzup.activity.RouteActivity}

这与我的另一个问题有关:Android foreground service lose context但我认为这个才是真正的问题,而且更准确。

如果你愿意,我可以发布一些代码。

最佳答案

这听起来像是您依靠 Activity 任务堆栈来维护您的所有状态。我建议您改用 PreferenceManager.getDefaultSharedPreferences() 之类的东西保持登录/注销状态。这样,如果它的 Activity 被终止并重新创建,您就可以生存。

我倾向于这样做的方式是让您的主要 Activity 成为您希望用户在登录后看到的 Activity 。在其 onCreate() 中检查用户是否登录,如果没有,startActivityForResult() 将它们发送到登录 Activity 。将登录状态保留在某处,以便您可以在主 Activity 的 onCreate() 中检查它。

关于java - 应用程序在 1 小时后失去当前 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com