我有活动生命周期与网络视图和电源按钮的问题。
我加载javascript页面与游戏内webview和我保留webview在应用程序上下文,所以它生存活动破坏。我知道我不应该像这样保存视图,但我有非常具体的场景,这是唯一的解决方案。它在应用程序之间切换时工作正常(即使有“不保留活动”调试标志),但当我这样做时:
我试着打印出所有的活动生命周期方法,在这两种情况下都是相同的。这两种情况之间有什么区别?
代码应用程序上下文:
public class MyApp extends Application {
private WebView mWebView;
//getter, setter ...
//preserving webview in app context
}
代码活动:
public void onCreate() {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initWebView();
}
private void initWebView() {
MyApp app = (MyApp) getApplication();
mWebView = app.getWebView();
if (!app.isWebViewInitialized()) {
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.requestFocus();
mWebView.addJavascriptInterface(new JavascriptInterface(this), "JSInterface");
mWebView.loadUrl("http://js-game-url.com");
mWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
mWebView.setWebViewClient(new WebViewClient());
app.setWebViewInitialized(true);
} else {
try {
((ViewGroup) mWebView.getParent()).removeView(mWebView);
//todo remake the try catch
} catch(NullPointerException e) {
System.out.println("Null"); //todo remove try catch
}
}
webviewPlaceholder = (RelativeLayout) findViewById(R.id.rlayout2);
webviewPlaceholder.addView(mWebView);
}
protected void onPause() {
super.onPause();
webviewPlaceholder.removeView(mWebView);
}
protected void onResume() {
super.onResume();
initWebView();
}
protected void onDestroy() {
super.onDestroy();
webviewPlaceholder.removeView(mWebView);
}
我肯定错过了一些简单的事情,但我找不到解决办法。
这不是活动生命周期的问题,而是webview javascript生命周期的问题。当重新打开屏幕后重新创建活动时,webview没有获得焦点。这修正了它:
mWebView.requestFocus();
我为测试函数做了简单的应用程序,如onCreate()、onStart等。每个函数都让你有自己的日志。开始测试。 null 为什么在执行应用程序时调用onResume方法?(在a中) 为什么onPause和onStop方法一起调用?(在b中) 为什么在C中调用三个方法而不是onRestart或onrestume?(c) 为什么调用onDestroy方法?(d) 附言:对不起,英语:)
本文向大家介绍Android活动生命周期介绍,包括了Android活动生命周期介绍的使用技巧和注意事项,需要的朋友参考一下 示例 假定具有MainActivity的应用程序可以通过单击按钮来调用Next Activity。 和 在首次创建应用程序 d / MainActivity:从主叫MainActivity的onCreate d / MainActivity:从主叫MainActivity调用
问题内容: 我使用下面的代码,但没有找到解决方案。 MyReceiver.java: 和 MainActivity.java: 和 AndroidManifest.xml: 但点击时,我没有收到任何吐司消息。请帮助我了解如何获得点击次数,如果点击次数等于5,请转到另一个。请帮我实现这个吗? 问题答案: 试试这个, 和,
我在开始新活动时遇到了一些问题。在我的应用程序中,我设置了侦听意图的广播接收器(屏幕关闭)。当屏幕关闭时,我的应用程序应该开始新活动(当然在某些情况下。我没有制作垃圾邮件应用程序)。但有时不是。 我在清单中声明了活动“singleTop”,所以我也重写了“onNewIntent”方法。(我认为这很重要)但事情是这样的。 当手机进入睡眠状态并且满足某些条件时,屏幕上会出现两个图标(“我的活动”)。我
在我的调试中,我注意到在片段上首先调用onpause/onstart/onstop/ondestroy,然后在它的活动上调用onResume,而onResume则相反--活动的onResume在它的片段之前首先调用。 为什么活动和片段之间的onpause/onstart/onstop与onResume的顺序不同?
我试图找出当锁屏启用和禁用时,活动生命周期中的差异。 场景A(无锁屏) 应用程序正在运行 按下电源按钮可关闭显示器 按下电源按钮打开显示屏 应用程序立即恢复 场景B(锁定屏幕启用,滑动解锁) 应用程序正在运行 按下电源按钮关闭显示 点击电源按钮打开显示 刷屏解锁 应用程序恢复(但我们在显示中得到一个错误,这是我们试图找到区别的地方) 我已经打印出了这两个场景的活动生命周期,它们在这两个场景中显示出