私のアクティビティはサービスを開始し、アプリケーションを閉じるとサービスは引き続き実行されます。 OK、そうです。しかし、私が再びアプリケーションを開くと、アクティビティで、私が以前に起動した実行中のサービス(クラス)で定義されたパブリック変数の値を知る必要があります。Android:実行中のサービスから変数を取得する
どうすればいいですか?
おかげ
私のアクティビティはサービスを開始し、アプリケーションを閉じるとサービスは引き続き実行されます。 OK、そうです。しかし、私が再びアプリケーションを開くと、アクティビティで、私が以前に起動した実行中のサービス(クラス)で定義されたパブリック変数の値を知る必要があります。Android:実行中のサービスから変数を取得する
どうすればいいですか?
おかげ
あなたがunbindServiceを呼び出さない場合は、あなたの活動はまだサービスへの接続を持っていて、単にサービスのメソッドを介して変数を確認することができます。
messengerを使用できます。 アンドロイドウェブサイトごと
メッセンジャーは、他の人がハンドラにメッセージを送信するために使用できるハンドラへの参照です。これにより、あるプロセスでハンドラを指し示すMessengerを作成し、そのMessengerを別のプロセスに渡すことで、プロセス間でメッセージベースの通信を実装できます。
アクティビティをサービスにバインドする場合は、Service
にBinder
インターフェイスの実装が必要です。あなたの活動に
public class ServiceBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
、あなたのサービスへのアクセスを提供するために使用される新しいServiceConnection
クラスの作成:ここで
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mMyService = ((MyService.ServiceBinder)service).getService();
}
public void onServiceDisconnected(ComponentName className) {
mMyService = null;
}
};
をメンバ変数mMyService
は、あなたのすべてのパブリックメンバーへのあなたのアクセスを提供しますサービスクラス。
あなたの活動にdoBindService
とdoUnbindService
を実装し、接続を作成するには:
void doBindService() {
bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
}
void doUnbindService() {
// Detach our existing connection.
unbindService(mConnection);
}
は、この情報がお役に立てば幸い!
ありがとうございます!それがポイントです。私はunbindServiceを呼び出さない。しかし私は自分のアクティビティを通してサービスのメソッドを呼び出す方法を知らない。 bindServiceとonServiceConnectedを使用しようとしましたが、成功しませんでした。 – Daniel
まあ、それは問題です。あなたは質問が誤解を招くことです。あなたは正しい質問をしなければなりません。さもなければあなたはどこにも行きません。 http://developer.android.com/guide/topics/fundamentals/bound-services.html ActivityMessengerコードを見る –