现在做的项目需要开机启动一个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. |