我对我正在编写的应用程序有问题。
我需要在每次广播时接收ACTION_SCREEN_ON、ACTION_SCREEN_OFF和ACTION_USER_PRESENT意图,所以我的应用程序当然会留在后台。目前,我的应用程序是由设置活动和服务组成的。ScreenReceiver是一个获取ACTION_SCREEN_*意图的BroadcastReceiver,而UnlockReceiver获取ACTION_USER_PRESENT意图。该服务注册和注销接收器:
public class MainService extends Service {
ScreenReceiver screenReceiver = null;
UnlockReceiver unlockReceiver = null;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onStart(Intent intent, int startId) {
doStart();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
doStart();
return START_STICKY;
}
public void doStart() {
if(screenReceiver != null && unlockReceiver != null)
return;
IntentFilter filter;
if(screenReceiver == null) {
filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
screenReceiver = new ScreenReceiver();
registerReceiver(screenReceiver, filter);
}
if(unlockReceiver == null) {
filter = new IntentFilter();
filter.addAction(Intent.ACTION_USER_PRESENT);
unlockReceiver = new UnlockReceiver();
registerReceiver(unlockReceiver, filter);
}
}
@Override
public void onDestroy() {
if(screenReceiver != null)
unregisterReceiver(screenReceiver);
if(unlockReceiver != null)
unregisterReceiver(unlockReceiver);
}
} 但有时Android会杀死我的服务来释放一些RAM,然后重启它。杀死和重生之间的时间通常在5秒左右,但有时这足以让我的应用程序的用户忽略一些给用户带来问题的意图。这些意图只能被注册为them,所以我不能在清单中注册它们。我如何才能在不被杀死或遗漏的情况下倾听这些意图呢?
谢谢!
发布于 2012-06-10 20:00:08
我如何才能在不被杀死或遗漏的情况下听到这些意图?
你不需要。你可以重写你的应用,要么不使用这些广播,要么在丢失广播的情况下更具弹性。毕竟,这不仅仅是"Android杀死我的服务来释放一些RAM,然后重新启动它“,而是任务管理器和类似的可以摆脱你的服务。
https://stackoverflow.com/questions/10968443
复制相似问题