私はStartService()を使用してアプリケーションの最初のアクティビティのOnCreateで作成されたAndroidサービスを持っています。このサービスは、アプリケーションのライフサイクル全体、つまりアプリケーション内のすべてのアクティビティで実行する必要があります。しかし、ユーザーがホームキーまたは戻るボタンを押した後に、サービスはリソースを消費すべきではありません。すべてのアクティビティのonPause()メソッドでサービスを停止する以外の方法はありますか?ホームキーを押した後にAndroidサービスが実行される
答えて
アクティビティを拡張し、それをすべての通常のアクティビティに拡張する新しいクラスです。
私はあなたの目標を達成する他のよりエレガントな方法を知りません。
ありがとうございました。私に良く見える – Ananth
StartServiceを使用する代わりに、onPauseのonResumeとunbindServiceでbindServiceを呼び出すことができます。開いているバインディングがない場合、サービスは停止します。
サービスにアクセスするにはServiceConnectionを作成する必要があります。例えば、ここでたMyService内にネストクラスです:
class MyService {
public static class MyServiceConnection implements ServiceConnection {
private MyService mMyService = null;
public MyService getMyService() {
return mMyService;
}
public void onServiceConnected(ComponentName className, IBinder binder) {
mMyService = ((MyServiceBinder)binder).getMyService();
}
public void onServiceDisconnected(ComponentName className) {
mMyService = null;
}
}
// Helper class to bridge the Service and the ServiceConnection.
private class MyServiceBinder extends Binder {
MyService getMyService() {
return MyService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return new MyServiceBinder();
}
@Override
public boolean onUnbind(Intent intent) {
return false; // do full binding to reconnect, not Rebind
}
// Normal MyService code goes here.
}
一つは介してサービスへのアクセスを得るために、このヘルパークラスを使用することができます:あなたはダレルはなく、Aにそのコードを置くことを示唆しているものを行うことができ
MyServiceConnection mMSC = new MyService.MyServiceConnection();
// Inside onResume:
bindService(new Intent(this, MyService.class), mMSC, Context.BIND_AUTO_CREATE);
// Inside onPause:
unbindService(mMSC);
// To get access to the service:
MyService myService = mMSC.getMyService();
あなたの応答のためにありがとう。このケースでも、私はすべてのアクティビティでOnPauseイベントを処理する必要があります – Ananth
- 1. ホームキーを押した後にボタンが応答しない
- 2. リセットボタンを押した後にSTM32F4プログラムが実行される
- 3. ホームキーが押されたときに設定アクティビティからウィジェットを更新する
- 4. AndroidのBackキーを押したときにメソッドが実行されました
- 5. EditTextに「Enter」を押した後にAndroidが関数を実行します
- 6. Androidの許可:ユーザーが「許可」を押した後にタスクを実行
- 7. Android:ホームキーが押されているかどうかを確認してください
- 8. デバイスのホームキーを押した後、アプリアイコンの最近のアクティビティを開く
- 9. ボタンを押したときにコマンドが実行されない
- 10. Windowsサービスで定義された時間後にメソッドを実行
- 11. Tkinterボタンが押されたときにPythonを実行する
- 12. Java Webサービス:起動後にコードが実行される
- 13. Qt:ボタンが押される前にスクリプトが実行される
- 14. android:Doneキーが押されたときにSoftkeyboardがアクションを実行
- 15. Android:サービスを終了した後にサービスがクラッシュしました
- 16. Upボタンを押したときに実行されるメソッド
- 17. メソッドが実行された後にループプログラムが再度実行される
- 18. Yii:submitButtonが押されたときに関数を実行
- 19. アプリケーションをスワイプアウトした後でバックグラウンドでサービスが実行されない
- 20. にsystemdサービスが実行されますが、その後、私のため
- 21. Android:空のリストビューは、ボタンが押された後に表示されます
- 22. ビューコントローラを押した後に、ナビゲーションバーの影が表示される
- 23. スタートスリープを使用した後にサービスが実行されていることを確認してください
- 24. MATLABでキーを押した後に関数を実行
- 25. コード変更後にAndroidスタジオアプリが実行される
- 26. Android/COSU:インストール後にアプリが自動実行される方法
- 27. ウィンドウを検査した後にスクリプトが実行される
- 28. 例外がスローされた後に実行を続行する
- 29. メソッドが実行されたときにサービスに知らせる
- 30. マウス1ボタンが押された後にbashスクリプトを実行する方法を検出するには?
「リソースを消費すべきではない」とはどういう意味ですか?あなたは何を意味していますか? – xandy
私はバックグラウンドで実行するサービスをしたくない – Ananth