系统4.03
最近发现了一个现象,如果在任务管理器中把一个Activity关掉,那么这个APK中所有运行的组件都会被关掉,而且有一个在Menifest中注册的广播接收器也收不到别的程序发给它的广播了。
但我的服务需要一直运行,有什么办法可以使服务不被关,或者可以知道什么时候被关以便重新启动?
在这种情况下如何使广播接收器能重新收到别的程序发给它的广播?
最近发现了一个现象,如果在任务管理器中把一个Activity关掉,那么这个APK中所有运行的组件都会被关掉,而且有一个在Menifest中注册的广播接收器也收不到别的程序发给它的广播了。
但我的服务需要一直运行,有什么办法可以使服务不被关,或者可以知道什么时候被关以便重新启动?
在这种情况下如何使广播接收器能重新收到别的程序发给它的广播?
2.关于服务,也有两种启动方式,如果你用startService的话,那么activity如果关掉,服务是不会关闭的,会一直运行的;如果用bindService,那么服务会和activity同事关闭。
希望对你有用!
public void onDestroy() {
Log.i("Utopia", "service销毁");
super.onDestroy();
Intent i = new Intent();
i.setClass(this, CallService.class);
startService(i);
}
打印了一下LOG,发现onDestroy没有被调用。renruir
manifest中已经注册了一个广播接收器,但程序在任务管理器中关闭后,这个接收器在一段时间内无法接收到新的广播怪我疏忽没有解释清楚,我用的是startService,按说这种方式如果没病没灾的,应该是可以长命百岁的。
.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())) {
.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())) {