Android-学习记录(1)

来源:互联网 发布:淘宝上迷彩服是正品吗 编辑:程序博客网 时间:2024/06/05 16:01

1. drawerLayout是Support Library包中实现了侧滑菜单效果的控件;在竖直滑动时想要刷新页面可以用SwipeRefreshLayout来实现;

2.ScrollView和HorizontalScrollView两个容器的使用。它们分别代表了垂直滚动以及水平滚动。layout_gravity 是LinearLayout 子元素的特有属性,该属性用于设置控件相对于容器的对齐方式。

3.LinearLayout中的TextView按比例显示的时候,layout_width="0dp"或者layout_height="0dp"

4.Activity一共有以下四种launchMode:
(1).standard :不管有没有已存在的实例,都生成新的实例
(2).singleTop :如果发现有对应的Activity实例正位于栈顶,则重复利用,不再生成新的实例。
(3).singleTask:如果发现有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前。
(4).singleInstance

5.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(data)));  //更新系统图库的方法 -- 需要发送一个广播更新系统图库,不然找不到所有的图片

6.service 中的enabled:这个属性用于指示该服务是否能够被实例化,exported:这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。


7.使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。然后我们经常会遇到我们自己定义的java对象里的属性名跟json里的字段名是不一样的,这种情况怎么办呢,这时我们就可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。

8.SharedPreference.Editor的apply和commit方法异同:apply是将修改数据原子提交到内存,而后异步真正提交到硬件磁盘,而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。
由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。

9.uptimeMillis由于不计算睡眠时间,所以非常适合做一些特殊的时间间隔计算。elapsedRealtime 包括睡眠时间,适用于任何情况下的时间间隔计算

10.pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。

11.Fragment的生命周期:Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。


原创粉丝点击