Android小知识汇总

1.Android Studio 将module编译打包成aar文件,module依赖的

(例如

compile 'com.zhy:autolayout:1.4.3'

)不会被打包进入aar文件,应用引入该aar文件(无论是本地引入,还是网络库引入)时,都还需要在应用(app)module的依赖中填加aar module的依赖。否则应用运行时会crash。

因此,开发sdk库(jar或aar)时,尽可能不依赖第三方库

2.Android 线程、组件之间通信可以通过Handler消息处理器,BroadCast广播,Service服务,EventBus。

3.Activity生命周期注意,还可以包含以下三个函数

//Activity窗口获得或失去焦点时被调用,在onResume之后或onPause之后  
    @Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
        super.onWindowFocusChanged(hasFocus); 
        Log.i(TAG, "onWindowFocusChanged called."); 
    }
 
   /** 
     * Activity被系统杀死时被调用. 
     * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死. 
     * 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态. 
     * 在onPause之前被调用. 
     */  
    @Override  
    protected void onSaveInstanceState(Bundle outState) {  
        outState.putInt("param", param);  
        Log.i(TAG, "onSaveInstanceState called. put param: " + param);  
        super.onSaveInstanceState(outState);  
    }  
      
    /** 
     * Activity被系统杀死后再重建时被调用. 
     * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity. 
     * 这两种情况下onRestoreInstanceState都会被调用,在onStart之后. 
     */  
    @Override  
    protected void onRestoreInstanceState(Bundle savedInstanceState) {  
        param = savedInstanceState.getInt("param");  
        Log.i(TAG, "onRestoreInstanceState called. get param: " + param);  
        super.onRestoreInstanceState(savedInstanceState);  
    }  
}  

4.getLong方法确定具有指定名称的系统属性的long值。不能用来将字符串转long型。可以用

Long.parseLong()或Long.valueOf()

语法1  public static Long getLong(String nm)

String str = "sun.arch.data.model";
System.out.println(Long.getLong(str));

// prints null
str = "lang";
System.out.println(Long.getLong(str));

打印结果:
64
null

5.java arraylist转数组

        ArrayList<String> arrayList = new ArrayList<String>();  

        arrayList.add("1");  

        arrayList.add("2");  

       // 正确转化方式  

        String[] strArrayTrue = arrayList.toArray(new String[0]);  

 
6.Android 布局文件慎用Start和End 如marginEnd,layout_alignParentStart等

Start和End是Google从Android4.2开始,为了配合RTL(从右往左读)布局给布局添加的新属性。

所以,在4.2以下,Start与End属性是无效的。

7.onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等,而不应该用来保存持久化数据,持久化数据应该当用户离开当前的 activity时,在 onPause() 中保存(比如将数据保存到数据库或文件中)。说到这里,还要说一点的就是在onPause()中不适合用来保存比较费时的数据,所以这点要理解。

onRestoreInstanceState()被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行 此也说明上二者,大多数情况下不成对被使用。可以用旋转屏幕来测试其的调用时机。

原文地址:https://www.cnblogs.com/genggeng/p/5941724.html