Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 取消注册接收器phonegap应用程序_Java_Android_Cordova - Fatal编程技术网

Java 取消注册接收器phonegap应用程序

Java 取消注册接收器phonegap应用程序,java,android,cordova,Java,Android,Cordova,我有一个适用于android的phonegap应用程序。 我正在尝试使用该插件进行GCM通知,但如果我注册了该设备,当我关闭应用程序时,控制台中会出现以下错误: 11-17 16:51:43.457:E/ActivityThread(12552):Activity org.apache.cordova.example.main活动 泄漏的监视接收器 com.google.android.gcm。GCMBroadcastReceiver@405a7158那是 最初在这里注册。你是不是错过了一个电话

我有一个适用于android的phonegap应用程序。 我正在尝试使用该插件进行GCM通知,但如果我注册了该设备,当我关闭应用程序时,控制台中会出现以下错误:

11-17 16:51:43.457:E/ActivityThread(12552):Activity org.apache.cordova.example.main活动 泄漏的监视接收器 com.google.android.gcm。GCMBroadcastReceiver@405a7158那是 最初在这里注册。你是不是错过了一个电话 取消注册接收器()?11-17 16:51:43.457:E/ActivityThread(12552): android.app.IntentReceiverLeaked:活动 org.apache.cordova.example.MainActivity已泄漏IntentReceiver com.google.android.gcm。GCMBroadcastReceiver@405a7158那是 最初在这里注册。你是不是错过了一个电话 取消注册接收器()?11-17 16:51:43.457:E/ActivityThread(12552):在 LoadedApk$ReceiverDispatcher。(LoadedApk.java:756) 11-17 16:51:43.457:E/ActivityThread(12552):在 android.app.LoadedApk.getReceiveDispatcher(LoadedApk.java:551)11-17 16:51:43.457:E/ActivityThread(12552):在 android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:860) 11-17 16:51:43.457:E/ActivityThread(12552):在 android.app.ContextImpl.registerReceiver(ContextImpl.java:847)11-17 16:51:43.457:E/ActivityThread(12552):在 android.content.ContextWrapper.registerReceiver(ContextWrapper.java:325) 11-17 16:51:43.457:E/ActivityThread(12552):在 com.google.android.gcm.gcmregistar.setRetryBroadcastReceiver(gcmregistar.java:276) 11-17 16:51:43.457:E/ActivityThread(12552):在 com.google.android.gcm.gcmregistar.register(gcmregistar.java:202) 11-17 16:51:43.457:E/ActivityThread(12552):在 com.plugin.GCM.GCMPlugin.execute(GCMPlugin.java:63)11-17 16:51:43.457:E/ActivityThread(12552):在 org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:61) 11-17 16:51:43.457:E/ActivityThread(12552):在 org.apache.cordova.api.PluginManager.exec(PluginManager.java:220) 11-17 16:51:43.457:E/ActivityThread(12552):在 org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:44)11-17 16:51:43.457:E/ActivityThread(12552):在 android.webkit.LoadListener.nativeFinished(本机方法)11-17 16:51:43.457:E/ActivityThread(12552):在 android.webkit.LoadListener.nativeFinished(本机方法)11-17 16:51:43.457:E/ActivityThread(12552):在 android.webkit.LoadListener.tearDown(LoadListener.java:1579)11-17 16:51:43.457:E/ActivityThread(12552):在 android.webkit.LoadListener.handleEndData(LoadListener.java:1041) 11-17 16:51:43.457:E/ActivityThread(12552):在 android.webkit.LoadListener.handleMessage(LoadListener.java:362)11-17 16:51:43.457:E/ActivityThread(12552):在 android.os.Handler.dispatchMessage(Handler.java:99)11-17 16:51:43.457:E/ActivityThread(12552):在 android.os.Looper.loop(Looper.java:130)11-17 16:51:43.457: E/ActivityThread(12552):在 webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:746) 11-17 16:51:43.457:E/ActivityThread(12552):在 run(Thread.java:1019)

在我的ActivityClass中,我有以下代码:

private BroadcastReceiver handleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString("message");
        //sveglia il telefono se è in stand-by
        WakeLocker.acquire(getApplicationContext());
        //visualizza il messaggio
        Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show();
        //rilascia il wavelocker
        WakeLocker.release();
    }

};   

@Override
protected void onStart() {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.CATEGORY_APP_MESSAGING);
    registerReceiver(handleMessageReceiver, intentFilter);
    super.onStart();
}

@Override
protected void onStop() {
    if(handleMessageReceiver != null) {
        unregisterReceiver(handleMessageReceiver);
        handleMessageReceiver = null;
    }       
    super.onStop();
}

@Override
public void onDestroy() {
    try{
        unregisterReceiver(handleMessageReceiver);
        GCMRegistrar.onDestroy(this);
    }catch(Exception e) {
    }
    super.onDestroy();
}
我使用javascript文件中的以下命令关闭应用程序:

navigator.app.exitApp();

有什么我忘记的吗?

您是在什么时候开始服务的?此外,如果我在GCM上按顺序注册和注销应用程序,而不退出该应用程序,它会工作。但是,如果我尝试向GCM注册应用程序,然后退出该应用程序,并且如果注册生效,则会出现以前的错误。然后我启动我的应用程序,我想注销该应用程序,但未调用onUnregister函数。执行register unregister功能的正确顺序是什么?启动服务的意思是什么?我在javascript文件中调用register函数。如果你没有使用服务,为什么要设置广播?我不需要它来使用gcm?我也在我的舱单中声明了广播接收者。