我正在通过活动调用启动和停止服务startSertice()/stopService()
(当用户选择/取消选择复选框并且服务不受限制时)。即使启动服务的活动已关闭,每件事都运行良好。在“正在运行的应用程序”中,我可以看到 1 个进程、1 个服务正在运行。但是,当我使用Task manager
某种应用程序终止应用程序时,进程被终止并且服务无法正常运行,尽管正在运行的应用程序显示0 processes, 1 service
. 如何使服务在这种情况下工作?我在其他一些安全应用程序(例如 Avast with )中观察到了同样的情况0 processes, 1 service
,而服务工作正常。请帮我解决这个问题。
以下是点击方法的活动
@Override
public void onClick(View arg0) {
boolean value = checkBox.isChecked();
if(value){
// start the service
startService(new Intent(this, MyService.class));
Toast.makeText(this, "Background service started", Toast.LENGTH_SHORT).show();
} else {
stopService(new Intent(this, MyService.class));
Toast.makeText(this, "Background service stopped", Toast.LENGTH_SHORT).show();
}
}
以下是服务类:
public class MyService extends Service{
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate(){
super.onCreate();
Log.d("@@@@@@Service","Service created successfully");
}
@Override
public int onStartCommand(Intent intent, int flags, int stardId){
Log.d("@@@@@@Service","Service started successfully");
IntentFilter powerButtonIntentFilter = new IntentFilter();
powerButtonIntentFilter.addAction("android.intent.action.SCREEN_ON");
this.registerReceiver(pbReceiver, powerButtonIntentFilter);
Log.d("#######","Power button register registered");
return START_STICKY;
}
@Override
public void onDestroy(){
Log.d("@@@@@@Service","Service destroyed successfully");
this.unregisterReceiver(pbReceiver);
Log.d("#######","Power button register un-registered");
super.onDestroy();
}
}
在理想情况下一切正常。即使启动服务的活动已关闭,广播接收器也会正确侦听 SCREEN ON 操作。我能够看到应用程序在设置中运行。但是当我使用任务管理器类型的应用程序强制终止进程时,进程被终止并且在运行的应用程序中我能够看到 0 个进程,1 个服务正在运行。尽管在从任务管理器中强制终止应用程序后服务正在运行,但广播接收器并未监听 SCREEN ON 操作。请帮我解决这个问题。
谢谢,JK