我的应用程序非常简单,我有一些活动(一个LoginActivity
是启动器和主要活动)。然后我有一些其他活动,最后是一个RouteActivity
启动服务的活动。
LocationService
扩展Service
并startForeground
带有通知。该服务刚刚启动LocationListener
并注册每个新的 GPS 定位点。该服务似乎工作得很好,如果我触摸通知图标,它会将我带回到我的应用程序活动从它开始的地方(而不是从登录活动)。
现在这是问题所在,如果我触摸应用程序图标(在 Android 启动器上),它有时会将我的应用程序启动到右侧和当前 activty RouteActivity
,但大约 1 小时后,如果我触摸应用程序图标,它只会从头重新启动应用程序并启动LoginActivity
.
但是,如果我触摸我的服务通知,如果让我回到右侧和后台活动。我的服务也没有被杀死,从来没有,所以它似乎工作得很好,与应用程序相关的对象和变量仍然存在。
所以呢 ?我有 2 个我的应用程序正在运行?我对这个有点迷茫,尤其是它似乎与时间有关。
这个“错误”是在 Android 2.X 上产生的,我无法在 Android 4.X 上重现它。调试有点困难,因为我必须让应用程序运行大约 1 小时。在那之后,我在 logcat 中没有特殊消息。
我注意到一些事情:ActivityManager 消息很奇怪,如果我通过通知中心的服务通知启动我的应用程序,它会记录:
Starting 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]
虽然如果我通过它记录的应用程序图标启动它,但显示的实际活动不是登录活动,而是实际启动服务的实际 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前台服务失去上下文 但我认为这是真正的问题并且更准确。
如果你愿意,我可以发布一些代码。