からサービスに渡すパラメータ私はこの方法でサービスに結合しています:アンドロイド:活動
Activityクラス:
:ListenLocationService mService;
@Override
public void onCreate(Bundle savedInstanceState) {
...
Intent intent = new Intent(this, ListenLocationService.class);
intent.putExtra("From", "Main");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
...
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className,
IBinder service) {
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
}
public void onServiceDisconnected(ComponentName arg0) {
}
};
これは私のサービスのonBind
方法であり、
@Override
public IBinder onBind(Intent intent) {
Bundle extras = intent.getExtras();
if(extras == null)
Log.d("Service","null");
else
{
Log.d("Service","not null");
String from = (String) extras.get("From");
if(from.equalsIgnoreCase("Main"))
StartListenLocation();
}
return mBinder;
}
だから私はLogCat
に "null"を持っています - バンドルはs私が作ったのは、intent.putExtra
の前にbindService
一般的にサービスはうまくいきます。しかし、私はStartListenLocation();
にアプリケーションのメインアクティビティからのみ呼び出す必要があります(私はフラグを送信することによりこれを行うことにしました)。
サービスにデータを送信するにはどうすればよいですか?または、起動したアクティビティを確認する別の方法がありますか?onBind
?
感謝を楽しみ、あなたのサービスクラスのONSTART方法で
を
とパラメータを取得します。私は後で別の問題に直面した、多分あなたはそれを解決する方法を知っている:http://stackoverflow.com/questions/9956601/android-set-and-get-services-variable-in-different-activities –
@yorkw "これはどのようにAPIで動作するように設計されたサービス通信をバインドする」 - 正しいとは思っていませんが、これについてもっと読むことができる公式のAndroidドキュメントへのリンクがありますか? – DuneCat
@DuneCat、私は声明が非常に正確ではないと同意した、実際には、Googleがバウンドサービスを実装するために提案した推奨方法の1つと言及されている。[here](http://developer.android.com/guide/components/bound -services.html#Binder)を参照してください。 – yorkw