不可不知的android开发冷知识1
2015-10-27 21:08
211 查看
1、Toast显示时长只有2种设置:Toast.LENGTH_LONG和Toast.LENGTH_SHORT,分别为3.5S和2S。第三个参数API文档虽然写了是时间,但是在Framework里作了重定义。
2、Intent传递数据时,除了可以传递基本数据外,还可以传递对象,但是对象需要实现Serializable接口或者Parcelable接口,由于File实现了Serializable接口,所以Intent可以传递File对象。
3、Button等组件需要在setContentView后才可以findViewById,否则会报ResourceNotFoundExeception。
4、系统可能产生ANR时间:Activity是5S,BroadcastReceiver是10S,Service是20S.
5、GLSurfaceView是一个视图,继承自SurfaceView,它内嵌Surface负责OpenGL渲染。
GLSurfaceView的特性为:
1、管理一个surface,这个surface是一块特殊的内存,能直接排版到view上。
2、管理一个EGL显示,能让OpenGL渲染到一个平面。
3、接受一个用户提供的实际显示的Renderer对象。
4、使用一个专用线程渲染,从而和UI主线程分离。
5、支持按需渲染和连续渲染。
6、可选的包、追踪和调试。
6、线程间通信机制
首先,Looper、Handler、MessageQueue三者共同实现了android系统中线程通信机制,如A、B两个子线程间需要传递消息,首先给每个子线程绑定一套handler、looper、
messageQueue机制,这三个对象都与其所属线程对应。然后A线程通过调用B线程的handler发送消息,消息被发送到B线程的messageQueue中,B线程的looper一直无限遍历messageQueue,一但发现队列收到新消息,就会对消息进行处理,处理过程中调用handler的handleMessage()方法,从而实现不同线程间的通信。
7、Looper实现原理
Looper类内部包含一个消息队列对象和一个线程对象。当创建Looper对象时,会自动创建一个空消息队列和一个未绑定的内部线程。当调用Looper.prepare()方法后,会让消息队列指向当前线程的消息队列,让空线程绑定当前线程,然后looper会自动进入无限for循环中,不断遍历消息队列,当有消息时会回调hanlder的handleMessage()方法进行处理。
2、Intent传递数据时,除了可以传递基本数据外,还可以传递对象,但是对象需要实现Serializable接口或者Parcelable接口,由于File实现了Serializable接口,所以Intent可以传递File对象。
3、Button等组件需要在setContentView后才可以findViewById,否则会报ResourceNotFoundExeception。
4、系统可能产生ANR时间:Activity是5S,BroadcastReceiver是10S,Service是20S.
5、GLSurfaceView是一个视图,继承自SurfaceView,它内嵌Surface负责OpenGL渲染。
GLSurfaceView的特性为:
1、管理一个surface,这个surface是一块特殊的内存,能直接排版到view上。
2、管理一个EGL显示,能让OpenGL渲染到一个平面。
3、接受一个用户提供的实际显示的Renderer对象。
4、使用一个专用线程渲染,从而和UI主线程分离。
5、支持按需渲染和连续渲染。
6、可选的包、追踪和调试。
6、线程间通信机制
首先,Looper、Handler、MessageQueue三者共同实现了android系统中线程通信机制,如A、B两个子线程间需要传递消息,首先给每个子线程绑定一套handler、looper、
messageQueue机制,这三个对象都与其所属线程对应。然后A线程通过调用B线程的handler发送消息,消息被发送到B线程的messageQueue中,B线程的looper一直无限遍历messageQueue,一但发现队列收到新消息,就会对消息进行处理,处理过程中调用handler的handleMessage()方法,从而实现不同线程间的通信。
7、Looper实现原理
Looper类内部包含一个消息队列对象和一个线程对象。当创建Looper对象时,会自动创建一个空消息队列和一个未绑定的内部线程。当调用Looper.prepare()方法后,会让消息队列指向当前线程的消息队列,让空线程绑定当前线程,然后looper会自动进入无限for循环中,不断遍历消息队列,当有消息时会回调hanlder的handleMessage()方法进行处理。
相关文章推荐
- [Android Pro] Android 4.1 使用 Accessibility实现免Root自动批量安装功能
- Android Studio新手指引
- android 59 LinearLayout 线性布局
- android复习第一天-----简单的android常识
- Android so文件进阶 <一>
- 对Android为intent提供两种传递对象参数类型的方法的个人简单理解
- Android4.2多用户模式的结构与实现
- Android L Settings 简要分析
- Android 生成图标的有力工具 Android Asset Studio
- Android Studio 使用lint工具进行代码优化
- Activity与DialogFragment交互的方法
- AndroidStudio用法总结
- Android:CoordinatorLayout使用详解
- Android onActivityResult不返回resultCode和intent
- Android 状态栏透明
- Android设计模式系列--模板方法模式
- Android设计模式系列--观察者模式
- Android设计模式系列--原型模式
- Android Studio常用快捷键
- Android设计模式系列-适配器模式