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

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/genggeng/p/5941724.html
Copyright © 2011-2022 走看看