最終更新:2016-01-19 (火) 17:17:39 (3020d)
Android/Binder
バインダはLinuxの優れたメモリ管理手法をそのまま採用することで、カーネル空間を通したデータ転送時にデータの信頼性を確保している。そしてユーザ空間からアクセスすることができないカーネル空間を利用してデータを受け取るためIPC感のセキュリティ問題も同時に解決することができる。
メモ
関連
定義
サービス
public class KitchenTimerService extends Service { class KitchenTimerBinder extends Binder { KitchenTimerService getService() { return KitchenTimerService.this; } } @Override public IBinder onBind(Intent intent) { Toast toast = Toast.makeText(getApplicationContext(), "onBind()", Toast.LENGTH_SHORT); toast.show(); return new KitchenTimerBinder(); }
アクティビティ側
private ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { kitchenTimerService = ((KitchenTimerService.KitchenTimerBinder)service).getService(); } @Override public void onServiceDisconnected(ComponentName className) { kitchenTimerService = null; } }; public void onCreate(Bundle savedInstanceState) { // サービスにバインド bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); }