亚洲av中文无码乱人伦在线视色,网曝黑料国产吃瓜,无码国产精品久久一区免费,亚洲av在在线观看,亚洲av国产午夜精品一区二区

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

  1. 開發(fā)一個Android App我們一般需要繼承Application來初始化一些配置,如下所示:

a. Application中有一個registerActivityLifecycleCallbacks()方法,可以在回調(diào)中把整個應(yīng)用打開的Activity保存在集合中、銷毀的Activity重集合中刪除。個人覺得這種方式比BaseActivity的方式或者每打開一個Activity把當(dāng)前的引用加入到集合中的方式優(yōu)雅多了,推薦大家用這種方式。關(guān)閉應(yīng)用也非常方便,遍歷保存Activity的集合,執(zhí)行finish()就好。

/**

b. 嚴(yán)苛模式StrictMode:建議大家在Debug版本打開嚴(yán)苛模式。 例如:嚴(yán)苛模式下可以檢測到你應(yīng)用中沒有關(guān)閉的流,可以減少OOM,如下所示,可以看到在在控制臺嚴(yán)苛模式模式下的Log輸出。

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

image.png

ThreadPolicy線程策略檢測

自定義的耗時調(diào)用 使用detectCustomSlowCalls()開啟

磁盤讀取操作 使用detectDiskReads()開啟

磁盤寫入操作 使用detectDiskWrites()開啟

網(wǎng)絡(luò)操作 使用detectNetwork()開啟

VmPolicy虛擬機策略檢測

Activity泄露 使用detectActivityLeaks()開啟

未關(guān)閉的Closable對象泄露 使用detectLeakedClosableObjects()開啟

泄露的Sqlite對象 使用detectLeakedSqlLiteObjects()開啟

檢測實例數(shù)量 使用setClassInstanceLimit()開啟

/**嚴(yán)苛模式主要檢測兩大問題,一個是線程策略,即TreadPolicy,另一個是VM策略,即VmPolicy。*/if (AppConfig.IS_DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {

c .在onCreate中,檢測當(dāng)前進(jìn)程名稱是否為應(yīng)用包名,否則return (像百度地圖等sdk需要在單獨的進(jìn)程中執(zhí)行,會多次執(zhí)行Application的onCreate()方法,所以為了只初始化一次應(yīng)用配置,作此判斷),代碼如下:

/**檢測當(dāng)前進(jìn)程名稱是否為應(yīng)用包名,否則return (像百度地圖等sdk需要在單獨的進(jìn)程中執(zhí)行,會多次執(zhí)行Application的onCreate()方法,所以為了只初始化一次應(yīng)用配置,作此判斷)*/if (!CommonUtil.getCurProcessName(this).equals(getPackageName())) { return;

d . Crash全局異常捕獲,用到了一個第三方庫,使用方法如下:

compile \’cat.ereza:customactivityoncrash:1.5.0\’

CustomActivityOnCrash.install(this);

應(yīng)用發(fā)生異常時customactivityoncrash庫會打開一個如下圖所示的Activity頁面,可以查看錯誤。

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

image.png

e .其他配置初始化

private void init() { /**注冊ActivityListener*/

2 .完整MyApplication代碼,如下所示:

public class MyApplication extends Application { private static MyApplication application; /**

3 . 應(yīng)用的入口SplashActivity的onCreate方法中要加入如下代碼,解決首次安裝應(yīng)用,點擊應(yīng)用圖標(biāo)打開應(yīng)用,點擊home健回到桌面,再次點擊應(yīng)用圖標(biāo),進(jìn)入應(yīng)用時多次初始化SplashActivity的問題

/**在應(yīng)用的入口activity加入以下代碼,解決首次安裝應(yīng)用,點擊應(yīng)用圖標(biāo)打開應(yīng)用,點擊home健回到桌面,再次點擊應(yīng)用圖標(biāo),進(jìn)入應(yīng)用時多次初始化SplashActivity的問題*/if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {

4 . app下的build.gradle配置,代碼如下

apply plugin: \’com.android.application\’apply plugin: \’com.antfortune.freeline\’android { //國內(nèi)鏡像地址來下載 $ ./gradlew initFreeline -Pmirror

5 . 應(yīng)用根目錄下得build.gradle文件配置,代碼如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.ext {

6 . 應(yīng)用的混淆配置文件,代碼如下:

-keepclassmembers class fqcn.of.javascript.interface.for.webview { public *;

7 . 此Demo的功能,可以在應(yīng)用內(nèi)切換Base_Url,退出登錄時還原默認(rèn)的Base_Url ,導(dǎo)出應(yīng)用的私有數(shù)據(jù)到SD卡上,個人覺得這幾個功能,是我們開發(fā)app時很需要的功能,如下所示:

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

image.png

8 . 混淆前后文件目錄變化如下圖所示,其中mapping.txt文件為混淆的映射文件,每個版本要注意保存起來(Umeng上需要導(dǎo)入這個文件的)。

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

image.png

9 . 對系統(tǒng)Log類的封裝Logger類,可以在控制臺打印出如下圖所示的功能,主要實現(xiàn)代碼如下:

StackTraceElement stackTrace = Thread.currentThread().getStackTrace()[4];

開發(fā)一個優(yōu)秀的Android應(yīng)用你必須要加入的代碼及配置(開發(fā)一個android應(yīng)用程序)

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
返回頂部