【发布时间】:2023-04-03 15:35:02
【问题描述】:
我正在尝试在我的应用程序中添加一个WebView 活动,以便在打开帮助 HTML 文件时,它们可以保证被浏览器打开。
只要活动开始,它就可以工作。但是功能充其量是脆弱的,很多时候WebViewActivity 类onCreate() 函数永远不会被调用,就好像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 接收到意图,但是当问题发生时,我在日志中没有条目说“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 上,否则挂起/恢复工作正常...... :(
【问题讨论】:
-
是的,没有代码。问题的要点在正文中。但公平地说,我会用代码更新问题,但我保证这无助于确定这一点。
标签: android android-activity webview