ここで述べたように、またすべての開発者がそうであるように、 がActivity
と通信するにはいくつかの方法がありますService
。最も一般的な方法は、Intent データとバインディングを使用することです。メソッドを呼び出すだけでサービスと通信できますか? 可能であれば、それは良い方法ですか?
1 に答える
1
はい、バインダーからサービス インスタンスを返すだけです。これを行う方法の例については、この記事をご覧ください。
上にリンクされた記事からの抜粋 (次の行を探してください: int num = mService.getRandomNumber();
)。
LocalService.java
public class LocalService extends Service {
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public int getRandomNumber() {
return 5;
}
}
BindingActivity.java
public class BindingActivity extends Activity {
LocalService mService;
boolean mBound = false;
@Override
protected void onStart() {
super.onStart();
// Bind to LocalService
Intent intent = new Intent(this, LocalService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
/** Defines callbacks for service binding, passed to bindService() */
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
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
// Call the method from service
int num = mService.getRandomNumber();
}
};
}
于 2013-09-05T13:37:44.837 に答える