私はこれに関するいくつかの調査を行っていますが、明確な答えは見つかりませんでした。バックグラウンドサービスプロセスのリバック
機能の課題がある:
はa)はボタンでレイアウト(OK)
B)(STARTのラベル)ISTは、バックグラウンドサービスを開始]をクリックして活動を開始します(OK)
Cアクティビティを閉じることができますが)、バックグラウンドサービスは
D)(OKを実行し続けなければならない)バックグラウンド・プロセスがまだそこにある、私は私の通知(OKでそれを見ることができます)
e)アクティビティが通知(OK)から再開します
f)アクティビティはプロセスに接続し、プロセスのステータスを取得する必要があります。単にサービスが実行されているかどうかを確認し、(b)から開始停止ボタンのラベルを停止に設定します。
e)ボタンを押すとサービスが停止します。ここで
は、いくつかの詳細は以下のとおりです。
私のサービスLogoTimerServiceへの接続は、このような活動で行われます。RESUME ON
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
// We've bound to LocalService, cast the IBinder and get
// LocalService instance
LogoTimerServiceBinder binder = (LogoTimerServiceBinder) service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
私は実際に接続するには、この関数を呼び出す:
private void connectLogoTimerService() {
Log.i(tag, "-connecting service");
Intent intent = new Intent(this, LogoTimerService.class);
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
if (mService!=null)
Log.i(tag, "-SERVICE BOUND");
else
Log.i(tag, "-Service NOT bound");
}
初めてアプリケーションを起動すると、2番目の(バインドされていない)メッセージが表示されます。
なぜバインドされていないのですか?それは遅くなるのですか? (それは遊んでいるようです)
私が活動を破壊しないなら、mServiceが見つかります。
ステータスを元に戻すにはどうすればよいですか?
私はサービスを開始し、バインドします。これは正しいです?
私はサービスがこのコードを使用して実行されていることを見ることができます(私は、このサイトに感謝し、それを見つけた):
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if (LogoTimerService.class.getName().equals(
service.service.getClassName())) {
return true;
}
}
return false;
}
はあなたの助けのためにありがとうございました!
一度接続すれば情報に戻ることはできますか? – user929995
最初にBindServiceを呼び出すと、アンドロイドシステムがバインディングを開始し、完了したらonServiceConnectedが呼び出されます。この時点で、サービスとアプリケーションはバインドされています。 –
ありがとう、それは動作します。 – user929995