1

我正在通过活动调用启动和停止服务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

4

0 回答 0