android 启动器 两次,启动新活动时,Android活动生命周期调用了两次

我基本上是在开始一个包含webview的新活动。但是这个webview活动的生命周期在第一次运行时调用了两次。当破坏此活动并重新打开时,一切正常。

活动A运行

Act A -> onCreate

Act A -> onStart

Act A -> onResume

开始新活动

startActivity(new Intent(this, WebViewActivity.class));

活动B(WebView活动)运行

Act A -> onPause

Act B -> onCreate

Act B -> onStart

Act B -> onResume

日志信息可能导致这种情况

W/WindowManager: Attempted to set replacing window on non-existing app token Token{1a4a5a ActivityRecord{219a05 u0 ui.activity.WebViewActivity t130}}

然后继续

Act B -> onPause

Act B -> onStop

Act B -> onDestroy

Act B -> onCreate

Act B -> onStart

Act B -> onResume

Act A -> onStop

我用很多设备测试过这种情况

Xiaomi mi a2 Lite Api 27-> error happens

Lg g4 Api 24 -> error happens

Huawei Nexus 6P Api 27-> error happens

Huawei Mate 10 Lite Api 26 -> error happens

Emulator Api 21 -> error not happens

Xiomi mi a2 Api 27 -> error not happens

是设备错误吗?还是操作系统错误?我怎样才能修好它?如果有人能帮忙,我将不胜感激。

我的webview活动代码

public class WebViewActivity extends BaseActivity implements ViewClickHandler {

public static final String TAG = WebViewActivity.class.getSimpleName();

public static final String URL = "https://www.google.com";

ActivityWebViewBinding binding;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

binding = DataBindingUtil.setContentView(this, R.layout.activity_web_view);

binding.setClickHandler(this);

binding.setLifecycleOwner(this);

setToolbar(binding.toolbar, true, R.string.terms_of_service);

initWebview();

binding.webView.loadUrl(URL);

Log.d(TAG, "onCreate");

}

private void initWebview() {

binding.webView.setWebViewClient(new WebViewClient(){

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

return super.shouldOverrideUrlLoading(view, url);

}

@RequiresApi(Build.VERSION_CODES.LOLLIPOP)

@Override

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

return super.shouldOverrideUrlLoading(view, request);

}

@Override

public void onPageStarted(

WebView view, String url, Bitmap favicon) {

try {

// showProgressDialog();

} catch (Exception ignore) {

}

}

@Override

public void onPageFinished(WebView view, String url) {

try {

// hideProgressDialog();

} catch (Exception ignore) {

}

}

@Override

public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {

//Your code to do

try {

// hideProgressDialog();

} catch (Exception ignore) {

}

}

});

binding.webView.setHorizontalScrollBarEnabled(false);

binding.webView.getSettings().setJavaScriptEnabled(true);

binding.webView.getSettings().setUseWideViewPort(true);

binding.webView.setInitialScale(1);

binding.webView.getSettings().setLoadWithOverviewMode(true);

}

@Override

public void onClick(View view) {

}

@Override

public void onCheckChange(View view, boolean isChecked) {

}

@Override

protected void onStart() {

super.onStart();

Log.d(TAG, "onStart");

}

@Override

protected void onResume() {

super.onResume();

Log.d(TAG, "onResume");

}

@Override

protected void onPause() {

super.onPause();

Log.d(TAG, "onPause");

}

@Override

protected void onStop() {

super.onStop();

Log.d(TAG, "onStop");

}

@Override

protected void onDestroy() {

super.onDestroy();

Log.d(TAG, "onDestroy");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值