package com.dayu.pipirrapp.observer; import android.util.Log; import android.view.ViewGroup; import android.webkit.WebView; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; /** * author: zuo * Date: 2024-01-11 * Time: 17:37 * 备注:地图页相关逻辑 */ public class MapFragmenObserver implements DefaultLifecycleObserver { static String TAG = "MapFragmen"; WebView mWebView; public void setmWebView(WebView webView) { mWebView = webView; } @Override public void onCreate(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onCreate(owner); Log.i(TAG, "onCreate"); } @Override public void onResume(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onResume(owner); Log.i(TAG, "onResume"); if (mWebView != null) { mWebView.onResume(); } // 恢复 WebView,能正常执行网页的响应 } @Override public void onPause(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onPause(owner); Log.i(TAG, "onPause"); if (mWebView != null) { mWebView.onPause(); // 通过 onPause 动作通知内核暂停所有的动作,如 DOM 的解析、plugin 的执行、JavaScript 执行等 } } @Override public void onDestroy(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onDestroy(owner); Log.i(TAG, "onDestroy>>>>>>>>>>>>>>>>>>>>>>>>>>>"); if (mWebView != null) { ((ViewGroup) mWebView.getParent()).removeView(mWebView); mWebView.destroy(); // 当 Activity 要 destroy 时,应先将 WebView 移除,再 destroy 掉 } } }