• 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方法不会被执行 此也说明上二者,大多数情况下不成对被使用。可以用旋转屏幕来测试其的调用时机。

  • 相关阅读:
    docker 镜像导入导出[转]
    部署coredns
    构建docker私有库
    怎么安装Docker CE 17( Centos 7)
    [转]使用tcpdump抓取HTTP包
    VLOOKUP函数使用
    有趣:256个class选择器可以干掉1个id选择器——张鑫旭
    算警示吧——此文来自张鑫旭(说说CSS学习中的瓶颈)
    不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭
    CSS中width和height与盒子模型的关系
  • 原文地址:https://www.cnblogs.com/genggeng/p/5941724.html
Copyright © 2020-2023  润新知