服务如何知道所在Activity在任务管理器中被关闭?
系统4.03
最近发现了一个现象,如果在任务管理器中把一个Activity关掉,那么这个APK中所有运行的组件都会被关掉,而且有一个在Menifest中注册的广播接收器也收不到别的程序发给它的广播了。
但我的服务需要一直运行,有什么办法可以使服务不被关,或者可以知道什么时候被关以便重新启动?
在这种情况下如何使广播接收器能重新收到别的程序发给它的广播?
[解决办法]
1.广播接收器定义的intent filter有两种注册方式,如果在manifest中注册的,即使你的应用没有运行,同样可以收到广播,并执行响应的代码。如果在代码中注册的广播,那么只能在应用运行时才能收到广播!我不知道,你的意思是不是指的这个!~
2.关于服务,也有两种启动方式,如果你用startService的话,那么activity如果关掉,服务是不会关闭的,会一直运行的;如果用bindService,那么服务会和activity同事关闭。
希望对你有用!
[解决办法]
@Override
public void onDestroy() {
Log.i("Utopia", "service销毁");
super.onDestroy();
Intent i = new Intent();
i.setClass(this, CallService.class);
startService(i);
}
[解决办法]
ActivityManager activityManager = (ActivityManager) mContext
.getSystemService(Context.ACTIVITY_SERVICE);
String packageName = "com.hmausa.bluelink";
String bingMapClassName = "com.hmausa.bluelink.BingMapActivity";
List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);
if (tasksInfo.size() > 0) {
ComponentName topConponent = tasksInfo.get(0).topActivity;
if (packageName.equals(topConponent.getPackageName())) {