Android应用开发基本知识点汇总[br]Activity一生命周期4种状态 running / paused / stopped / killed生命周期[br]->onPause ->onStop ->onDestroyView ->onDestroy ->onDetach[br]onCreate ->onStartCommand ->onBind ->onDestroy[br]onStartCommand return START_STICKY;[br]startService(intent); stopService(intent);[br]BindServiceBroadcast定义场景 可在同一个App多个进程间消息传递,可在不同App间消息传递种类 Normal, System有序广播,Local本地广播二 实现方式静态注册 注册完一直运行动态注册 跟随Activity生命周期三 实现机制四 本地广播LocalBroadcastManager由于之前的广播都是全局的,所有应用程序都可以接收到,这样就很容易会引起安全性的问题,比如说我们发送一些携带关键性数据的广播有可能被其他的应用程序截获,或者其他的程序不停地向我们的广播接收器里发送各种垃圾广播。[br]为了能够简单地解决广播的安全性问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自应用程序发出的广播,这样所有的安全性问题就都不存在了。[br]异步消息处理Handler子线程发送消息,让主线程更新UIhandler使用方法post(runnable)与sendMessage(message)handler内存泄漏解决办法:1. handler改为静态内部类 2.handler内部持有Activity外部弱引用[br]3. mHandler.removeCallback()HandlerThread多次创建销毁线程很耗费系统资源[br]本质上是线程, 继承自Thread,同时自己内部拥有Looper对象,可以进行Looper循环[br]串行队列,不能同时多任务处理,需要等待[br]handlerThread = handler + thread + looperAsyncTask本质上封装了线程池和Handler[br]传入三个参数 xxxAsyncTask extends AsyncTask<Integer, Integer, String>使用参数,进度参数,结果参数[br]onPreExecute 在UI线程里执行[br]onProgressUpdate 在UI线程里执行[br]onPostExecute 在UI线程里执行[br]xxxAsyncTask.cancel()并行or串行?[br]onHandleIntent 执行耗时操作[br]jsbridge通过JS构建起的桥WebView硬件加速导致页面渲染问题BinderLinux的进程间通信有Pipe, Socket,共享内存,信号量,信号,报文。[br]但是出于性能和安全考虑,Android引入了Binder机制。[br]Binder驱动位于内核空间,两个位于用户空间的进程间的通信,必须使用到Linux系统调用。[br]Binder对象是一个跨进程通信的对象,由Binder驱动实现。[br]进程通过Binder驱动向Service Manager注册,Service Manager维护一张表。[br]进程A从Service Manager里查询进程B,Service Manager返回一个代理对象,[br]代理对象通过Binder驱动实现,将结果返回给Service Manager。