6

我有一个非常无聊的问题。当我的应用程序进入后台时,有时该进程会被终止,如 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}

然后,当我尝试通过任务切换器(长按主页)返回应用程序时,它会尝试返回上一个打开的活动......然后崩溃。

为什么它不从头开始打开,在整个应用程序关闭时打开 Main?

ERROR/InputDispatcher 错误并不总是出现。

更新:

问题是......应用程序已恢复,但其中下载的对象(作为哈希图)不是......所以当我访问它们时......我有“问题”......

更新 2:

如果应用程序包含我需要的数据或者它是否为空(在这种情况下它重新启动应用程序),我已经通过验证 BaseActivity 上的 onCreate (由其他所有扩展)来解决问题。

有没有更优雅的解决方案,或者至少有一种方法可以告诉设备如果应用程序被终止,我希望重新启动应用程序?

此链接有助于理解问题......并且知道如何存储来自应用程序的数据没有明确的答案:如何在 Android 中声明全局变量?

更新 3:

所以我专门问了一个关于如何正确保存应用程序数据的问题。这可能会帮助那些有同样问题的人:Android: Best way to save data stored in Application Singleton Class

4

1 回答 1

3

据我所知,它可以追溯到因为用户没有关闭应用程序。不过:您是否正在访问从打开活动传递的该活动中的捆绑数据?如果是这样,您可能需要查看捆绑实例保存和恢复功能,您可以实施这些功能来解决应用程序以无效状态返回前台的问题。

为清楚起见进行编辑:应用程序恢复到以前的状态,因为它在后台时由于内存不足而被操作系统杀死。在任务切换回来后,它会恢复到之前的状态,并且当该活动恢复时,无效/不存在的捆绑数据可能会导致崩溃。

于 2011-05-18T15:47:34.587 回答