Android 바인딩 서비스 작성 방법

  • 서비스 바인딩에 대응하는Activity는 서비스 안의 방법을 호출할 수 있습니다.말하자면 서비스를 받을 수 있는 대상
  • Activity 제거에 해당되는 서비스도 없어짐
  • 서비스 쓰기
  • public class MyService extends Service{
    
        private final static String TAG = "wzj";
        private int count;
        private boolean quit;
        private Thread thread;
        private LocalBinder binder = new LocalBinder();
    
        public class LocalBinder extends Binder{
            MyService getService(){
                return MyService.this;
            }
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            return binder;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    //     
                    //     count 1;  quit  true
                    while (!quit){
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        count++;
                    }
                }
            });
            thread.start();
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onDestroy() {
            this.quit = true;
            super.onDestroy();
        }
    
        public int getCount(){
            return count;
        }
    
        public boolean onUnBind(Intent intent){
            return super.onUnbind(intent);
        }
    }
    
  • 명세서 파일의 설정 방법
  • 
    
  • 에 대응하는 Activity에 멤버 변수가 있음
  • private MyService mService;
    
  • 서비스 이용 방법
  • ServiceConnection conn = new ServiceConnection() {
    //          ,          ,         Service     Ibinder  
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            //  Binder
            MyService.LocalBinder binder = (MyService.LocalBinder) iBinder;
            mService = binder.getService();
        }
    
        //      ,     
        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            mService = null;
        }
    }
    
  • 부팅 방법
  • Intent intent = new Intent(this,MyService.class);
    bindService(intent,conn, Service.BIND_AUTO_CREATE);
    
  • 이렇게 하면 획득한 mService에서 호출하는 방법을 사용할 수 있다
  • 좋은 웹페이지 즐겨찾기