OnPause 未在 cordova/phonegap 中执行代码 :(((

Posted

技术标签:

【中文标题】OnPause 未在 cordova/phonegap 中执行代码 :(((【英文标题】:OnPause not executing code in cordova/phonegap :((( 【发布时间】:2014-09-05 18:38:51 【问题描述】:

已经一周了,我仍然在将 cordova 集成到 ana android webview 时遇到问题! 在 onPause 和 onResume 工作正常之前,但在集成后它们不再触发。 即使我在控制台中看到了这一点:

07-15 17:01:21.880: D/CordovaActivity(5635): Paused the application!
07-15 17:01:21.880: D/CORDOVA_ACTIVITY(5635): onPause

但是 opPause 函数中的代码没有执行!!我真的厌倦了。我尝试了一周不停地让它工作。

这是我的主要 java 文件:

package com.Snap.What;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.webkit.javascriptInterface;

import org.apache.cordova.*;

public class WhatSnap extends CordovaActivity implements CordovaInterface

    private CordovaWebView cordova_webview;
    private String TAG = "CORDOVA_ACTIVITY";
    private final ExecutorService threadPool = Executors.newCachedThreadPool();

    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cordova_layout);
        cordova_webview = (CordovaWebView) findViewById(R.id.cordova_web_view);
        // Config.init(this); 
        cordova_webview.loadUrl("file:///android_asset/www/index.html");
        JavaScriptInterface jsInterface = new JavaScriptInterface(this);
        cordova_webview.getSettings().setJavaScriptEnabled(true);
        cordova_webview.addJavascriptInterface(jsInterface, "JSInterface");


    





    public class JavaScriptInterface 
        private Activity activity;

        public JavaScriptInterface(Activity activiy) 
            this.activity = activiy;
        

        @JavascriptInterface
        public void showLog()
            Log.v("blah", "blah blah");
        


    


    @Override 
    protected void onPause()  
        super.onPause(); 
        Log.d(TAG, "onPause");
     

    @Override 
    protected void onResume()  
        super.onResume(); 
        Log.d(TAG, "onResume");
     


    @Override
    public void onDestroy()  
        super.onDestroy(); 
        if (this.cordova_webview != null) 
            this.cordova_webview
                    .loadUrl("javascript:trycordova.require('cordova/channel').onDestroy.fire();catch(e)console.log('exception firing destroy event from native');;"); 
            this.cordova_webview.loadUrl("about:blank");
            cordova_webview.handleDestroy();
         
     



    @Override 
    public Activity getActivity() 
        return this;
     


    @Override 
    public ExecutorService getThreadPool() 
        return threadPool;
     


    @Override 
    public Object onMessage(String message, Object obj) 
        Log.d(TAG, message);
        if (message.equalsIgnoreCase("exit")) 
            super.finish(); 
         
        return null; 
     
//
//
//    @Override 
//    public void setActivityResultCallback(CordovaPlugin cordovaPlugin) 
//        Log.d(TAG, "setActivityResultCallback is unimplemented");
//     


//    @Override 
//    public void startActivityForResult(CordovaPlugin cordovaPlugin,
//            Intent intent, int resultCode) 
//        Log.d(TAG, "startActivityForResult is unimplemented");
//     



我也尝试从 java 中评论 onPause 和 onresume 但我只在控制台中得到这个:

07-15 17:01:21.880: D/CordovaActivity(5635): Paused the application!

在我的 js 中,我有以下几行:

 document.addEventListener("resume", onResume, false);
    document.addEventListener("pause", punish, false);

以及不会执行的相应功能!

我真的不知道他们为什么不执行..请看一下,你有什么想法请告诉我。

【问题讨论】:

请确保在科尔多瓦的 deviceReady 事件之后添加侦听器。您可以将其添加到 deviceReady 事件处理程序中。 @Rupesh 我在 deviceready 函数中添加了它.. 奇怪!!.. 我正在使用相同的,它的工作正常。我相信在你的情况下设备就绪处理程序正在执行,对吧? @Rupesh 是的,伙计..只有 onPause 和 onReady 事件不起作用,其他工作正常.. 【参考方案1】:

这是一个旧帖子,如果有人在关注,仍然是

改变

document.addEventListener("pause", punish, false);

document.addEventListener("pause", onPause, false);

【讨论】:

以上是关于OnPause 未在 cordova/phonegap 中执行代码 :(((的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 onPause() 之后调用 onDestroy()?

onPause() 和 onStop() 不起作用

OnResume / OnPause多次调用

如何生成 onPause() 事件代码 [关闭]

android - onPause()

onPause 方法没有被调用