一、四大组件
Activity (生命周期可编辑onResume和可见onStart,不可编辑onPause和不可见onStop)、Service (AIDL,开始方式)、BroadcastReceived(有序,无序) 、ContentProvider(Uri)
二、五大布局
LinearLayout 、RelativeLayout(降低布局嵌套) 、FreamLayout 、TableLayout 、AbsoluteLayout
三、通信机制
Intent(隐式,显示,两个之间的数据传递)、Service、BroadcastReceived、Handler(多线程)、sharedPreferred(如果跳转的次数太多,可以考虑本地文件存储了)、file(类似于sharedPreferred)
四、动画
帧动画、Tween动画(移动、缩放、旋转、透明)
五、ListView
各种布局加载(动态加载布局)、优化(convertView、ViewHolder、异步加载、分页加载)、notifyDataSetChanged更新数据
六、Fragment
与Activity(使用FragmentManager)之间的通信、Fragment使用(getActivity())
七、线程、进程
1.进程:一个应用程序在内存中的镜像
2.线程:一个进程中可以包含多个线程
多线程、多线程下载
Thread Runnable Handler AsyncTask
应用场景:耗时操作(一般指5秒)和定时操作(schedule Task)
具体场景:IO操作(网络操作、文件操作、数据库操作)、复杂的运算算法、消息接收方法的耗时操作、定时任务
- 线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
八、http和socket
Http(短连接)特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接
Socket(长连接) 特点 服务器监听,客户端请求,连接确认
区别、优缺点、返回码的含义
返回码200成功206部分成功404文件丢失503服务器未响应
九、数据存储
文件存储、SharedPreference(密码、判断)、SQLite(继承SQLiteOpenHelper,生成SQLiteDatabase
对象来新建处理SQL语句,数据库升级)、网络存储(上传、下载)
十、自定义组件
两种方式:include(标签一般用merge);创建自定义控件(一般有响应按钮时调用)
两个主要方法measure和layout,要是自定义View,显示时用setContentView
十一、适配器
Drawable(.9图片)、 Layout 、Values(dimen) 、Java代码控制 、weight
十二、开源框架、开源组件
框架:Volley 、xUtil 、okhttp、eventBus、Gson、festJson、imageloader、Picasso(获取远程图片)、zxing(二维码)
组件:pull2RefreshListView、SlidingMenu
十三、内存优化和程序优化
1.Android优化的布局(使用merge标签优化层级、不需要立即加载的布局,设置为GONE,系统会跳过,不加载、使用ViewStub 实现按需加载、ListView的优化)、
- 对内存的优化( 1.Reckon(计算)首先需要知道你的app所消耗内存的情况,知己知彼才能百战不殆 2.Reduce(减少)消耗更少的资源(BitmapFactory.Options设置inSampleSize, 这样做可以减少对系统资源的要求;如果对图片没要求可以设置RGB_565(每像素占2字节,默认的是ARGB_8888占4个字节)opt.inPreferredConfig = Bitmap.Config.RGB_565;用Bitmap.recycle()方法来释放Bitmap占用的内存空间) 3.Reuse(重用)当第一次使用完以后,尽量给其他的使用 4.Recycle(回收)返回资源给生产流 5.Review(检查)回顾检查你的程序,看看设计或代码有什么不合理的地方。)
- 数据库使用完成后要记得关闭cursor 4.广播使用完之后要注销
- 小tip: 避免创建不必要的对象最常见的例子就是当你要频繁操作一个字符串时,使用StringBuffer代替String;避免使用枚举,枚举变量非常方便,但不幸的是它会牺牲执行的速度和并大幅增加文件体积;永远不要在for的第二个条件中调用任何方法