がこれについて多くの質問をしていますが、これを修正することはできません。どうすればRECEIVE_BOOT_COMPLETEDサービス
私はこのコードを持って
public class myBroadcastReceiver extends BroadcastReceiver {
private final String TAG = "myBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Consts.ANDROID_INTENT_ACTION_BOOT_COMPLEATE)){
Intent newinIntent = new Intent(context, ServiceBootCompleated.class);
context.startService(newinIntent);
}
}
}
それはService
起動し、「私はreturn START_NOT_STICKY;
が実行されていることがわかり
android.os.Debug.waitForDebugger();
このラインを使用してデバッグすることができますが、それでも サービスはとして表示されています セッティング>プログラム>実行中のサービスで実行中のサービス
私が手動で停止しない限り、は呼び出されません。
私はそれを止めるために何をしなければなりませんか?
"Setttings> programs> Running Services"ウィンドウからそれを削除しますか?あなたはstopSelf()
はあなたがサービスで行う任意の実際の作業はのonCreateまたはonStartCommandにバックグラウンドスレッドとして行われていないことを確認し、バックグラウンドの呼び出しでやってみたかった仕事を完了したら
私はstopSelfを呼んでください()と作業がonStartCommandで実行されています。このコードは、MySqlの整合性をチェックするわずかな行です。私はそれをスレッドに移動します。ありがとう – Erik
私はstopSelf()を置くべきですか? thread.run();の後のonStartCommandでまたはこのctx.stopSelf()のようなrun(); – Erik
onStartCommandが(メインスレッドから)stopSelfを呼び出すと、onStartCommandが復帰するまでサービスが開始されていないと考えられます。私は通常、作業の完了時に別のスレッドから呼び出しています。 – cistearns