Android 畫面內容更新注意事項

通常畫面更新前, 需要背景處理的工作, 有時候會耗掉一些時間, 若使用

runOnUIThread 會造成畫面停頓,好像當掉一樣, 此時可以使用AsyncTask處理

class MyAsyncTask extends AsyncTask<Void, Void, Void>{
   
    @Override
    protected Void doInBackground(Void... params) {
    // 這裡處理背景工作
      return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
// 這裡處理畫面元件(這邊會耗時,所以盡量只處理簡單的畫面資料
    }
}

android 上架把log停掉

-dontskipnonpubliclibraryclasses
-dontobfuscate
-forceprocessing
-optimizationpasses 5
-keep class * extends android.app.Activity
-assumenosideeffects class android.util.Log {
public static *** d(…);
public static *** v(…);
}

編輯proguard-rules.pro

buildTypes {
release {
minifyEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

確認 build.gradle 裡面的 buildTypes 屬性

Android 開檔案出現權限問題 FileUriExposedException

除了設定以下policy外,

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

還需要進行額外設定

try{
Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
m.invoke(null);
}catch(Exception e){
e.printStackTrace();
}

1 2 3