天天看點

android 啟動的空白以及一些小bug

空白解決方案,

<!-- Customize your theme here. --> <!-- 啟動時頁面為透明色,避免顯示空白頁,好像有問題,還是空白頁 --> <item name="android:windowIsTranslucent">true</item> <!-- 這個起作用,啟動時有點延時,實際就是加載了透明的背景,如微信6.3.28 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 設定啟動背景圖檔,避免顯示空白頁,如支付寶9.9.5 --> <!-- <item name="android:windowBackground">@drawable/splash_bg</item> --> <!-- 隐藏标題欄 --> <item name="android:windowNoTitle">true</item> <!-- 隐藏狀态欄 --> <item name="android:windowFullscreen">true</item>

  • 當你遇到這個錯的時候,

    Couldn't load HDACEngine from loader dalvik.system.PathClassLoader[dexPath=/data/app/io.agora.openlive-1.apk,libraryPath=/data/app-lib/io.agora.openlive-1]: findLibrary returned null ,解決方案就是,在build中配置,路徑不正确,一般情況下是這樣的

    sourceSets {

    main {

    jniLibs.srcDirs = [‘libs’]

    }

  • listVIew跳轉到item的某個位置,需要用setSelectionFromTop,不能setSelection在scroll,容易出現空白的item,
  • 反射真的很慢,ormlite比直接使用sql慢一倍,
  • activity中runOnUiThread,當Activity的finish了。依然會執行
  • view的addOnlayoutChangeListener監聽layout的回調事件
  • view的getviewTreeObserver().addOnGlobalLayoutListener監聽全局的layout的事件,當然你可以直接在baseActivity監聽内容,讓子類實作,如下
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final View viewById = findViewById(Window.ID_ANDROID_CONTENT);
        ViewTreeObserver viewTreeObserver = viewById.getViewTreeObserver();
        viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    viewById.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                } else {
                    viewById.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                }
                Log.e("aaaaaa","aaaaaaaa");
                initUIlandEvent();
            }
        });
    }

    /**
     * 子activity中實作,可以實作一些監聽事件,布局初始化了。
     */
    public abstract void initUIlandEvent();
           
  • 據說在app被解除安裝或者停止的時候,jni裡fork出來的子線程,不會被停止,可以用于包活之類的
  • Activity的theme之類的都是給window的decorview設定的,生效面積大于activity