Activity和Service通信 Bind方式
生活随笔
收集整理的這篇文章主要介紹了
Activity和Service通信 Bind方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文由PurpleSword(jzj1993)原創,轉載請注明
原文網址 http://blog.csdn.net/jzj1993
在Service中自定義Binder類,實現方法getService;覆寫Service的onBind方法
public?class?MainService?extends?Service?{
????@Override ????public?void?onCreate()?{ ????????super.onCreate(); ????}
????@Override ????public?void?onDestroy()?{ ????????super.onDestroy(); ????}
????@Override ????public?IBinder?onBind(Intent?intent)?{ ????????return?new?MsgBinder(); ????}
????public?class?MsgBinder?extends?Binder?{ ????????/** ?????????*?獲取當前Service的實例 ?????????*? ?????????*?@return ?????????*/ ????????public?MainService?getService()?{ ????????????return?MainService.this; ????????} ????} }
Activity中通過bindService綁定Service,Activity結束時斷開綁定(注意:綁定時會自動啟動Service,Activity終止時Service也會停止,要讓Service后臺運行應該同時調用StartService)
從ServiceConnection的回調方法中可以獲取自定義的Binder實例,從而獲取Service實例,即可方便的進行通信
? ??@Override ????public?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ? ? ? ? Intent?intent?=?new?Intent(ActivityMain.this,?MainService.class); ????????this.startService(intent); ????????bindService(intent,?conn,?Context.BIND_AUTO_CREATE); ? ? }
????@Override ????public?void?onDestroy()?{ ????????this.unbindService(conn); ????????super.onDestroy(); ????}
????MainService?svc;
????private?ServiceConnection?conn?=?new?ServiceConnection()?{ ????????@Override ????????public?void?onServiceDisconnected(ComponentName?name)?{ ????????}
????????@Override ????????public?void?onServiceConnected(ComponentName?name,?IBinder?service)?{ ????????????MsgBinder?binder?=?(MsgBinder)?service; ????????????svc?=?binder.getService(); ????????} ????};
在Service中自定義Binder類,實現方法getService;覆寫Service的onBind方法
public?class?MainService?extends?Service?{
????@Override ????public?void?onCreate()?{ ????????super.onCreate(); ????}
????@Override ????public?void?onDestroy()?{ ????????super.onDestroy(); ????}
????@Override ????public?IBinder?onBind(Intent?intent)?{ ????????return?new?MsgBinder(); ????}
????public?class?MsgBinder?extends?Binder?{ ????????/** ?????????*?獲取當前Service的實例 ?????????*? ?????????*?@return ?????????*/ ????????public?MainService?getService()?{ ????????????return?MainService.this; ????????} ????} }
Activity中通過bindService綁定Service,Activity結束時斷開綁定(注意:綁定時會自動啟動Service,Activity終止時Service也會停止,要讓Service后臺運行應該同時調用StartService)
從ServiceConnection的回調方法中可以獲取自定義的Binder實例,從而獲取Service實例,即可方便的進行通信
? ??@Override ????public?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ? ? ? ? Intent?intent?=?new?Intent(ActivityMain.this,?MainService.class); ????????this.startService(intent); ????????bindService(intent,?conn,?Context.BIND_AUTO_CREATE); ? ? }
????@Override ????public?void?onDestroy()?{ ????????this.unbindService(conn); ????????super.onDestroy(); ????}
????MainService?svc;
????private?ServiceConnection?conn?=?new?ServiceConnection()?{ ????????@Override ????????public?void?onServiceDisconnected(ComponentName?name)?{ ????????}
????????@Override ????????public?void?onServiceConnected(ComponentName?name,?IBinder?service)?{ ????????????MsgBinder?binder?=?(MsgBinder)?service; ????????????svc?=?binder.getService(); ????????} ????};
總結
以上是生活随笔為你收集整理的Activity和Service通信 Bind方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: F4NNIU 的 Docker 学习资料
- 下一篇: 安卓屏幕尺寸相关知识