net*_*ein 6 android android-lifecycle android-activity
我有一个非常无聊的问题.当我的应用程序转到后台时,有时会在LogCat显示时终止该进程:
INFO/ActivityManager(187): Low Memory: No more background processes.
INFO/ActivityManager(187): Process com.app.myapp (pid 20681) has died.
INFO/WindowManager(187): WIN DEATH: Window{40592708 com.app.myapp/app.myapp.dashboard.Dashboard paused=false}
ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Consumer closed input channel or an error occurred. events=0x8
ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Channel is unrecoverably broken and will be disposed!
INFO/WindowManager(187): WIN DEATH: Window{408b1d40 app.myapp/app.myapp.menus.products.Promotions paused=false}
INFO/ActivityManager(187): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=app.myapp/.Main } from pid 187
INFO/ActivityManager(187): Start proc app.myapp for activity app.myapp/.menus.products.Promotions: pid=20721 uid=10062 gids={3003, 1015}
Run Code Online (Sandbox Code Playgroud)
当我尝试返回应用程序时,通过任务切换器(长按回家),它会尝试返回上次打开的活动...并崩溃.
为什么不从头开始,在整个应用程序关闭时打开Main?
ERROR/InputDispatcher错误并不总是出现.
更新:
问题是......应用程序已恢复,但其下载的对象(作为散列图)不是......所以当我访问它们时......我有"问题"......
更新2:
如果Application包含我需要的数据或者它是null(在这种情况下它重新启动应用程序),我已经设法通过验证onCreate on BaseActivity(由其他所有人扩展)来解决问题.
是否有更优雅的解决方案,或者至少有一种方式可以告诉设备如果应用程序被杀死,我希望重新启动应用程序?
这个链接有助于理解这个问题......并且知道如何从Application中存储数据没有明确的答案:如何在Android中声明全局变量?
更新3:
所以我特地问了一个如何正确保存应用程序数据的问题.这可能有助于那些有相同问题的人:Android:保存Application Singleton Class中存储数据的最佳方法
据我了解,它会返回,因为用户没有关闭应用程序。不过:您是否正在访问从打开活动传递的该活动中的捆绑数据?如果是这样,您可能需要研究捆绑包实例保存和恢复功能,您可以实现这些功能来解决应用程序以无效状态返回前台的问题。
为了清楚起见进行编辑:应用程序恢复到之前的状态,因为它在后台时由于内存不足而被操作系统杀死。任务切换回来后,它会恢复到之前的状态,并且当该活动恢复时,无效/不存在的捆绑数据可能会导致崩溃。
| 归档时间: |
|
| 查看次数: |
9155 次 |
| 最近记录: |