<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                五、編寫Application 的代理類 Tinker 表示,Application 無法動態修復,所以有兩種選擇: 1.使用「繼承TinkerApplication + DefaultApplicationLike」。 2.使用「DefaultLifeCycle 注解+ DefaultApplicationLike」。 當然,如果你覺得你自定義的Application 不會用到熱修復,可無視這部分; 但下方代碼中的initTinker()方法記得要拷貝到你項目中,用于初始化Tinker。 第1 種方式感覺比較雞肋,這里使用第2 種(Tinker 官方推薦的方式): 「DefaultLifeCycle 注解+ TinkerApplicationLike」,DefaultLifeCycle 注解生成Application,下面就來編寫Application 的代理類: 1、編寫TinkerApplicationLike 將下方的代碼拷貝到項目中,注釋簡單明了,不多解釋: ``` @SuppressWarnings("unused") @DefaultLifeCycle(application = "com.lqr.tinker.MyApplication",// application 類名。只能用字 符串,這個MyApplication 文件是不存在的,但可以在AndroidManifest.xml 的application 標簽上 使用(name) flags = ShareConstants.TINKER_ENABLE_ALL,// tinkerFlags loaderClass = "com.tencent.tinker.loader.TinkerLoader",//loaderClassName, 我們這里 使用默認即可!(可不寫) loadVerifyFlag = false)//tinkerLoadVerifyFlag public class TinkerApplicationLike extends DefaultApplicationLike { private Application mApplication; private Context mContext; private Tinker mTinker; // 固定寫法 public TinkerApplicationLike(Application application, int tinkerFlags, boolean tinkerLoadVerifyFlag, long applicationStartElapsedTime, long applicationStartMillisTime, Intent tinkerResultIntent) { super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent); } // 固定寫法 @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) { getApplication().registerActivityLifecycleCallbacks(callback); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public void onBaseContextAttached(Context base) { super.onBaseContextAttached(base); mApplication = getApplication(); mContext = getApplication(); initTinker(base); // 可以將之前自定義的Application 中onCreate()方法所執行的操作搬到這里... } private void initTinker(Context base) { // tinker 需要你開啟MultiDex MultiDex.install(base); TinkerManager.setTinkerApplicationLike(this); // 設置全局異常捕獲 TinkerManager.initFastCrashProtect(); //開啟升級重試功能(在安裝Tinker 之前設置) TinkerManager.setUpgradeRetryEnable(true); //設置Tinker 日志輸出類 TinkerInstaller.setLogIml(new MyLogImp()); //安裝Tinker(在加載完multiDex 之后,否則你需要將com.tencent.tinker.**手動放到main dex 中) TinkerManager.installTinker(this); mTinker = Tinker.with(getApplication()); } } ``` 2、搬運自定義Application 中的操作 把項目中在自定義Application 的操作移到TinkerApplicationLike 的onCreate()或onBaseContextAttached()方法中。 ``` public class TinkerApplicationLike extends DefaultApplicationLike { ... @Override public void onCreate() { super.onCreate(); // 將之前自定義的Application 中onCreate()方法所執行的操作搬到這里... } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public void onBaseContextAttached(Context base) { super.onBaseContextAttached(base); mApplication = getApplication(); mContext = getApplication(); initTinker(base); // 或搬到這里... } } ``` 3、清單文件中注冊 將@DefaultLifeCycle 中application 對應的值,即"com.lqr.tinker.MyApplication",賦值給清單文件的application 標簽的name屬性,如下: ``` <application android:name="com.lqr.tinker.MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" 更多錄播視頻+架構學習資料免費領取請加Android 開發高級技術交流群QQ 群:892872246 android:theme="@style/AppTheme"> ... </application> ``` 注意: 此時name 屬性會報紅,因為項目源碼中根本不存在MyApplication.java 文件,但不必擔心,因為它是動態生成的,Build 一下項目就好了,不管它也無所謂。 對于Application 代理類的詳細說明,請參考:「Tinker 官方Wiki:Application代理類」。 到這里就已經集成好Tinker 了,但只是本地集成而已,服務端下發補丁包到app 的文章之后會陸續發布更新。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看