0

ここで述べたように、またすべての開発者がそうであるように、 がActivityと通信するにはいくつかの方法がありますService。最も一般的な方法は、Intent データとバインディングを使用することです。メソッドを呼び出すだけでサービスと通信できますか? 可能であれば、それは良い方法ですか?

4

1 に答える 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 に答える