架构日记(一) 模块化多Moudle下的Application引用方式

APP 0 1581
00224176
00224176 版主 - APP 关注 2021年7月22日 15:51 编辑
<p>传统的项目结构中Application毫无疑问,肯定是放在app目录下的。<br><br>说一说我遇到问题的场景:<br><br> 本人正在base moudle中新建RxJava+Retrofit+OkHttp的请求框架式,在新建拦截器Interceptor的时候有一个地方需要用到Application。这就有点尴尬了呀。<br><br>其实我们完全可以换一个思路嘛,Lib模块不就是要一个Application吗,给他~<br><br>Moudle base作为一个基础库或者说是公共依赖包,所有的Moudle都是需要依赖它的,那么就来一个BaseApplication吧</p><pre><code>public class BaseApplication extends Application {<br> <br> /**<br> * 系统上下文<br> */<br> private static Context mAppContext;<br> <br> @Override<br> public void onCreate() {<br> super.onCreate();<br> mAppContext = getApplicationContext();<br> <br> }<br> <br> /**<br> * 获取系统上下文:用于ToastUtil类<br> */<br> public static Context getAppContext() {<br> return mAppContext;<br> }<br>}</code></pre><p style="outline: 0px; --tw-shadow:0 0 #0000 ; --tw-ring-inset:var(--tw-empty, ); --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(66, 153, 225, 0.5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000 ; margin-top: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; line-height: 26px !important;">接下来我们看看app工程,首先是app-gradle</p><pre style="outline: 0px; --tw-shadow:0 0 #0000 ; --tw-ring-inset:var(--tw-empty, ); --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(66, 153, 225, 0.5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000 ; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; background-color: rgb(255, 255, 255);">implementation project(':base')</pre><p style="outline: 0px; --tw-shadow:0 0 #0000 ; --tw-ring-inset:var(--tw-empty, ); --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(66, 153, 225, 0.5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000 ; margin-top: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; line-height: 26px !important;">接下来就是继承了</p><pre><code>public class MyApplication extends BaseApplication {<br> <br> private RefWatcher refWatcher;<br> @Override<br> public void onCreate() {<br> super.onCreate();<br> if(BuildConfig.DEBUG){<br> ARouter.openDebug();<br> }<br> ARouter.init(this);<br> refWatcher= setupLeakCanary();<br> }<br> <br> private RefWatcher setupLeakCanary() {<br> if (LeakCanary.isInAnalyzerProcess(this)) {<br> return RefWatcher.DISABLED;<br> }<br> return LeakCanary.install(this);<br> }<br> <br> public static RefWatcher getRefWatcher(Context context) {<br> MyApplication leakApplication = (MyApplication) context.getApplicationContext();<br> return leakApplication.refWatcher;<br> }<br>}</code></pre><p><span style="color: rgb(77, 77, 77); font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; font-size: 16px;">至于使用方式不用多说了吧,继承来的不是私有的都可以用~~</span><br></p>
赞(0) 收藏(0)  分享
相关标签:
0个回复
  • 消灭零回复
Vaptcha启动中...