Skip to content

Commit a27d5cf

Browse files
committed
MutableContextWrapper示例
1 parent 2b50a00 commit a27d5cf

File tree

7 files changed

+238
-243
lines changed

7 files changed

+238
-243
lines changed

app/src/main/java/org/ninetripods/mq/study/CommonWebviewActivity.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import android.view.KeyEvent
77
import android.view.ViewGroup
88
import android.widget.RelativeLayout
99
import androidx.appcompat.widget.Toolbar
10-
import org.ninetripods.mq.study.util.WebViewPool.getCachedWebView
10+
import org.ninetripods.mq.study.util.WebViewPool
1111
import org.ninetripods.mq.study.util.webview.Html5Webview
1212

1313

@@ -31,15 +31,12 @@ class CommonWebviewActivity : BaseActivity() {
3131
val toolbar = findViewById<Toolbar>(R.id.toolbar)
3232
initToolBar(toolbar, "AndroidStudy", true)
3333
mContainer = findViewById(R.id.rl_container)
34-
mWebView = getCachedWebView(this)
34+
mWebView = WebViewPool.getCachedWebView(this)
3535
if (mWebView == null) {
3636
//没有缓存
3737
mWebView = Html5Webview(this)
3838
}
39-
val params = RelativeLayout.LayoutParams(
40-
RelativeLayout.LayoutParams.MATCH_PARENT,
41-
ViewGroup.LayoutParams.MATCH_PARENT
42-
)
39+
val params = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
4340
params.addRule(RelativeLayout.BELOW, R.id.toolbar)
4441
mContainer?.addView(mWebView, params)
4542

app/src/main/java/org/ninetripods/mq/study/MainActivity.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.ninetripods.mq.study.jetpack.JetpackAndKtFragment;
2020
import org.ninetripods.mq.study.jetpack.KConsts;
2121
import org.ninetripods.mq.study.jetpack_compose.JetpackComposeFragment;
22+
import org.ninetripods.mq.study.util.WebViewPool;
2223
import org.ninetripods.mq.study.util.fragment.HomeFragment;
2324
import org.ninetripods.mq.study.util.fragment.MultiThreadFragment;
2425
import org.ninetripods.mq.study.util.fragment.NestedScrollFragment;
@@ -48,7 +49,7 @@ public void initViews() {
4849
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawer_layout, toolbar, 0, 0);
4950
drawerToggle.syncState();
5051
//NOTE: 切换初始化展示的Fragment
51-
selectItem(KConsts.FRAGMENT_HOME);
52+
selectItem(KConsts.FRAGMENT_NESTED_SCROLLER);
5253
}
5354

5455
@Override
@@ -165,4 +166,10 @@ public void onBackPressed() {
165166
}
166167
back_pressed = System.currentTimeMillis();
167168
}
169+
170+
@Override
171+
protected void onDestroy() {
172+
WebViewPool.INSTANCE.releaseAll();
173+
super.onDestroy();
174+
}
168175
}
Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,41 @@
1-
package org.ninetripods.mq.study;
1+
package org.ninetripods.mq.study
22

3-
import android.app.Application;
4-
import android.content.Context;
5-
6-
import androidx.lifecycle.ProcessLifecycleOwner;
7-
import androidx.multidex.MultiDex;
8-
9-
import org.ninetripods.mq.study.jetpack.lifecycle.MyApplicationLifecycleObserver;
10-
import org.ninetripods.mq.study.jetpack.base.http.RetrofitUtil;
11-
import org.ninetripods.mq.study.util.SPHook;
12-
import org.ninetripods.mq.study.util.WebViewPool;
3+
import android.app.Application
4+
import android.content.Context
5+
import androidx.lifecycle.ProcessLifecycleOwner
6+
import androidx.multidex.MultiDex
7+
import org.ninetripods.mq.study.jetpack.base.http.RetrofitUtil.initRetrofit
8+
import org.ninetripods.mq.study.jetpack.lifecycle.MyApplicationLifecycleObserver
9+
import org.ninetripods.mq.study.util.SPHook.optimizeSpTask
10+
import org.ninetripods.mq.study.util.WebViewPool
1311

1412
/**
1513
* Created by mq on 2018/8/19 下午9:17
1614
* mqcoder90@gmail.com
1715
*/
18-
19-
public class MyApplication extends Application {
20-
21-
private static MyApplication application;
22-
23-
@Override
24-
protected void attachBaseContext(Context base) {
25-
super.attachBaseContext(base);
16+
class MyApplication : Application() {
17+
override fun attachBaseContext(base: Context) {
18+
super.attachBaseContext(base)
2619
//为方法数超过 64K 的应用启用 MultiDex
2720
//https://developer.android.com/studio/build/multidex?hl=zh-cn
28-
MultiDex.install(this);
21+
MultiDex.install(this)
2922
}
3023

31-
@Override
32-
public void onCreate() {
33-
super.onCreate();
34-
application = this;
35-
//初始化Retrofit
36-
RetrofitUtil.INSTANCE.initRetrofit();
37-
//基于Lifecycle,监听Application的生命周期
38-
ProcessLifecycleOwner.get().getLifecycle().addObserver(new MyApplicationLifecycleObserver());
39-
//SP优化
40-
SPHook.INSTANCE.optimizeSpTask();
41-
//提前缓存WebView
42-
WebViewPool.INSTANCE.preloadWebView();
24+
override fun onCreate() {
25+
super.onCreate()
26+
mApplication = this
27+
initRetrofit() //初始化Retrofit
28+
ProcessLifecycleOwner.get().lifecycle.addObserver(MyApplicationLifecycleObserver()) //基于Lifecycle,监听Application的生命周期
29+
optimizeSpTask() //SP优化
30+
WebViewPool.preloadWebView() //提前缓存WebView
4331
}
4432

45-
public static MyApplication getApplication() {
46-
return application;
33+
companion object {
34+
var mApplication: MyApplication? = null
35+
36+
@JvmStatic
37+
fun getApplication(): MyApplication {
38+
return mApplication!!
39+
}
4740
}
4841
}

app/src/main/java/org/ninetripods/mq/study/util/fragment/NestedScrollFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
5858
tv_nested_child_parent.setOnClickListener(v -> startActivity(new Intent(getActivity(), NestedScrollActivity.class)));
5959
mTvBehavior.setOnClickListener(v -> startActivity(new Intent(getActivity(), CustomBehaviorActivity.class)));
6060
mTvCustom.setOnClickListener(v -> CommonFragmentsActivity.Companion.start(
61-
Objects.requireNonNull(getActivity()), DemoFragment.class.getCanonicalName(), "DemoFragment"));
61+
requireActivity(), DemoFragment.class.getCanonicalName(), "DemoFragment"));
6262
}
6363
}

0 commit comments

Comments
 (0)