最終更新:2016-01-19 (火) 17:17:39 (3010d)  

Android/Binder
Top / 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);
    
            }

参考