【发布时间】:2017-04-21 23:36:43
【问题描述】:
我有一个这样创建的服务:
<service
android:name="com.myFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
然后我像这样实现onBind:
private final IBinder mBinder = new LocalBinder();
private myListener mListener;
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
public void setListener(myListener listener) {
mListener = listener;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (mListener != null) mListener.onMessageReceived(remoteMessage);
}
这很简单:Activity 绑定到 Service 并设置一个监听器。当 Service 收到消息时,它只是触发侦听器
现在最大的问题是:如果活动突然崩溃会发生什么?在这种情况下mListener 将指向不存在的东西,不是吗?
如何在调用mListener.onMessageReceived(remoteMessage)之前查看绑定的Activity是否还活着?
【问题讨论】:
标签: android android-service ipc android-service-binding bindservice