jul*_*jul 5 android foreground android-activity
我的应用程序在与其他应用程序玩一段时间后回到前台时崩溃,我无法找到如何解决它.
我的应用程序有一个启动画面活动,它从Web服务加载一些数据并将其放在扩展应用程序类中声明的全局静态变量中,如此SO问题中所述.加载所有数据后,此活动将启动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
Run Code Online (Sandbox Code Playgroud)
并且调试器已分离.
现在,当我再次打开我的应用程序时,如果它不使用全局变量,则会启动最新活动(在这种情况下,一旦我导航到一个活动,它就会崩溃),否则立即崩溃.
如果我的应用程序被杀了,这似乎就是这种情况,因为即使我的位置服务已停止,如logcat中所示,为什么它会打开最新的活动而不是从启动画面再次启动?
这不是你问题的直接答案,但我认为它可能有用.
您决定将数据存储在全局变量中是不好的.这是因为每次用户离开它时你的应用都会被杀死.当他或她回来时,你需要再次加载数据.
你应该使用ContentProvider和Service.Service应该从互联网加载数据并存储到ContentProvider.ContentProvider应坚持数据.应使用所有活动ContentProvider来访问此缓存数据.
这样你的应用程序:
ContentProvider在应用程序运行期间保持不变(例如,如果您使用SQLite).原因你需要一些时间来投入到实现Service和ContentProvider在,并妥善处理Acitivities.但是您的应用程序将更加强大和可扩展(您可以轻松添加新组件).
解决您的问题的一个肮脏的解决方法是检查全局变量是否已填充到活动的onResume 方法中。如果变量未填充,则使用设置了CLEAR_TOP标志的 Intent 启动闪屏活动。这应该会导致您的所有活动从活动堆栈中删除,并且您的启动屏幕将加载并能够重新加载应用程序运行所需的所有数据。
这是一个肮脏的解决方法,可以帮助设计糟糕的应用程序工作。如果您希望您的应用程序对您和用户都更好,请使用 inazaruk 提供的解决方案。他关于应用程序的基本设置是正确的。
| 归档时间: |
|
| 查看次数: |
2927 次 |
| 最近记录: |