Android意图“丢失”(活动未启动)

时间:2015-04-20 13:23:47

标签: android android-activity webview

我尝试在我的应用程序中添加WebView活动,以便在打开帮助HTML文件时,它们可以保证由浏览器打开。 只要活动开始,它就可以工作。但功能最多是脆弱的,通常WebViewActivityonCreate()函数永远不会被调用,就好像startActivity发送的意图得到lost in cyberspace一样。有时候它有效。我看不到任何用logcat来表示它为什么会如此间歇地工作。

另外,我有一部手机可以在90%的时间内工作,而另一部手机可以在10%的时间工作。

有没有人经历过这个?

编辑:

开始活动的代码:

public final void launchInternalHTMLFile(String filePath)
    {
        try {
            Intent intent = new Intent(Main.this, WebViewActivity.class);
            intent.putExtra("TheURL", filePath);
            Log.d("Tag", "launchInternalHTMLFile " + filePath);
            startActivity(intent, null);
            Log.d("Tag", "launchInternalHTMLFile startActivity called");
        } catch (Exception ex) {
            Log.e("Tag", "launchInternalHTMLFile exception: " + ex);
        }
    }

WebViewActivity代码:

public class WebViewActivity extends Activity {
    private WebView mWebView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d("Tag", "WebViewActivity.onCreate");
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);

        mWebView = new WebView(this);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
        });
        this.setContentView(mWebView);
        mWebView.postDelayed(new Runnable() {
            @Override
            public void run() {
                mWebView.loadUrl(getIntent().getStringExtra("TheURL"));
            }
        }, 100);
    }

    @Override
    public boolean onKeyDown(final int keyCode, final KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

使用logcat,我可以看到ActivityManager接收到intent,但是当问题发生时,我在日志中得到NO条目" WebViewActivity.onCreate" ...

喔。忘记清单:

<activity android:name=".WebViewActivity" android:label="@string/app_name" android:screenOrientation="portrait">
</activity>

编辑:大部分时间工作的手机是Android 4.4.2,而大多数时间不工作的手机是4.4.4。怪异。

编辑:问题已追溯到GLSurfaceView.onPause,它永远不会返回,有效地挂起了应用程序。虽然这只发生在startActivity上,否则暂停/恢复应该按照它应该...... :(

2 个答案:

答案 0 :(得分:0)

您是否在活动的主要主题中调用了launchInternalHTMLFile(String filePath)

答案 1 :(得分:0)

我通过将嵌入式活动的开始延迟50毫秒来解决这个问题(使用android.os.Handler.postDelayed)。

现在至少,GLSurfaceView.onPause没有锁定,但仍然......应该有更好的方法来解决这个问题。