现在做的项目需要开机启动一个service,service的主要工作是app的版本检测和消息刷新。当服务器有新的消息时,在状态栏显示通知。
今天在调试通知功能时,发现在打开app并关闭后,后台的service就会停掉了。查找了个把小时,最后发现是我在关闭程序时使用了这样的方式来关闭应用:
因为我的BroadcastReceiver是在启动Activity的下一层目录下,所以当用上述的方法关闭所有的Activity时,就会将BroadcastReceiver中创建Alarm也一并关掉了
关于这个方法的详细说明如下:
void android.app.ActivityManager .restartPackage(String packageName)
public void restartPackage (String packageName)
Since: API Level 3
Have the system perform a force stop of everything associated with the given application package. All processes that share its uid will be killed, all services it has running stopped, all activities removed, etc. In addition, a ACTION_PACKAGE_RESTARTED broadcast will be sent, so that any of its registered alarms can be stopped, notifications removed, etc.
You must hold the permission RESTART_PACKAGES to be able to call this method.
Parameters
| packageName | The name of the package to be stopped. |
解决Service被意外关闭的问题
本文探讨了在Android应用中如何避免使用ActivityManager的restartPackage方法导致后台Service被意外关闭的情况,介绍了该方法的工作原理及可能引发的问题。
9628

被折叠的 条评论
为什么被折叠?



