1

アクティビティの呼び出しからサービスを開始および停止していますstartSertice()/stopService()(ユーザーがチェック ボックスを選択/選択解除し、サービスが制限されていない場合)。サービスを開始するアクティビティが閉じられていても、すべてが正常に機能しています。「実行中のアプリ」では、1 つのプロセス、1 つのサービスが実行されていることがわかります。しかし、Task managerある種のアプリケーションを使用してアプリケーションを強制終了すると、プロセスが強制終了され、実行中のアプリが表示されてもサービスが機能しません0 processes, 1 service。このような状況でサービスを機能させるにはどうすればよいですか? 0 processes, 1 serviceサービスが正常に動作している間、Avast with のような他のいくつかのセキュリティ アプリケーションでも同じことが観察されました。これについて私を助けてください。

以下は、クリック時のアクティビティです。

@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