我正在使用GCM。我想停止GcmListenerService,以便我可以阻止Application接收不需要的通知。
我已经尝试过以下关闭服务,但似乎没有锻炼
Intent intent = new Intent(this, MyGcmListenerService.class);
stopService(intent);
这是我的服务类
public class MyGcmListenerService extends GcmListenerService
{
private static final String TAG = "MyGcmListenerService";
// [START receive_message]
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
String duration = data.getString("duration");
Log.d(TAG, "From: " + from);
Log.d(TAG, "Message: " + message);
sendNotification(message,duration);
}
// [END receive_message]
private void sendNotification(String message, String duration) {
new DisplayNotification(this).makeGCMNotification("Event Name", "Event Start Time", 1);
}
}
并在清单
<service
android:name=".Utilities.GCM.MyGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
答案 0 :(得分:1)
停止服务不会有帮助,因为只要有新消息,GCMReceiver就会一直调用startWakefulService
。由于GCMReceiver类不是我们应该编辑的东西,我建议你保留一个布尔值或设置一个偏好,知道什么时候应该实际读取/处理收到的消息。基于此,您可以在后台接收消息,而在app / foreground中实际上什么都不做。
答案 1 :(得分:1)
您可以使用以下两种方法取消订阅GCM:defrule
和defmatch
。这两种方法都会生成IOExceptions,因此也必须处理它们。