我的应用程序在与其他应用程序玩一段时间后回到前台时崩溃,我无法找到如何解决它.
我的应用程序有一个启动画面活动,它从Web服务加载一些数据并将其放入在扩展应用程序的类中声明的全局静态变量,如this SO question中所述.一旦加载了所有数据,此活动将启动一个Home活动,其中包含一些菜单在应用程序中导航.全球变量用于大多数活动.
在某些时候,在玩其他应用程序时,似乎我的应用程序被杀了,因为我可以在logcat中看到这个:
I/ActivityManager( 2465): Process com.mysite.myapp (pid 23538) has died.
I/WindowManager( 2465): WIN DEATH: Window{4852a678 com.mysite.myapp/com.mysite.myapp.Home paused=false}
I/WindowManager( 2465): WIN DEATH: Window{485b63a8 com.mysite.myapp/com.mysite.myapp.Home paused=false}
I/WindowManager( 2465): WIN DEATH: Window{4826fbf8 com.mysite.myapp/com.mysite.myapp.ItemList paused=false}
I/WindowManager( 2465): WIN DEATH: Window{48286f90 com.mysite.myapp/com.mysite.myapp.ItemDetail paused=false}
W/GpsLocationProvider( 2465): Unneeded remove listener for uid 1000
D/GpsLocationProvider( 2465): stopNavigating
D/gps_BRCM( 2465): [status check] on_stop() : GPS_STATUS_SESSION_END
D/gps_BRCM( 2465): gps_engine_status_update 2
D/GpsLocationProvider( 2465): send an intent to notify that the GPS has been enabled or disabled
D/gps_BRCM( 2465): gps_stop: called
V/GpsLocationProvider( 2465): hybridGpsSensorDeregister : No registered sensorManager
D/GpsLocationProvider( 2465): hybridGpsSensorDeregister
并且调试器已分离.
现在,当我再次打开我的应用程序时,如果它不使用全局变量,则会启动最新活动(在这种情况下,一旦我导航到一个活动,它就会崩溃),否则立即崩溃.
如果我的应用程序被杀了,这似乎就是这种情况,因为即使我的位置服务已停止,如logcat中所示,为什么它会打开最新的活动而不是从启动画面再次启动?
解决方法:
解决问题的一个肮脏的解决方法是检查全局变量是否填充在您的活动的onResume method中.如果未填充变量,则使用设置了CLEAR_TOP标志的Intent启动splashscreen活动.这应该会导致您从活动堆栈中删除所有活动,并且您的启动屏幕将加载并能够重新加载应用程序运行所需的所有数据.
这是一个肮脏的解决方法,可以帮助设计糟糕的应用程序.
如果您希望您的应用程序对您更好,并且用户使用提供的解决方案inazaruk.他对应用程序的基本设置是正确的.