最近在技术交流群中有人问到:要实现service与activity的高强度通信用什么方法?
群友回答的是用handler,但面试官好像不太满意,后来本人查找了下资料,得到个人的结论:service与activity之前的通信方式有很多,回调接口方式、观察者模式、广播、还有handler等,方法有很多,但要高强度地通信,个人觉得还是用回调接口的方式比较妥当(虽然本人开始也是用的传入的handler。。。哈哈,用handler的话,如果涉及到service要向多个activity传送数据就变得麻烦了)。所以在这里记录下回调接口的方式进行通信:
service部分:
注册
<service
android:name=".MyService"
android:enabled="true"
android:exported="false"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="MyService.START_SERVICE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
public class MyService extends Service {
private Callback callback = null;
Thread readthread;
Boolean RUN_THREAD = false;
@Override
public IBinder onBind(Intent intent) {
Utils.log(1,"MyService", "onBind");
return mybinder;//注意这里返回值不能为null 否则在activity中绑定时不会触发onServiceConnected()
}
private MyBinder mybinder = new MyBinder();
public class MyBinder extends Binder{
public MyService getService(){
return MyService.this;
}
&nb