开始学习Android开发了,这里记录一下学习过程中个人觉得重要的知识点;
LayoutInflater
要点:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;用来找 res/layout下的 xml 布局文件,并且实例化;
2、对于一个已经载入的界面(例如setcontentview后),就可以使用findViewById()方法来获得其中的界面元素;是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。
活动的启动模式
通过给<activity>标签指定Android:launchmode属性选择启动模式
1、standard默认启动模式:每次启动创建一个该活动的新的实例
2、singsingleTop:若栈顶已经是该活动则再次启动直接使用栈顶的实例
3、singTask:若栈内有该活动则该活动之上所有活动出栈使用该活动
4、singleInstance:启动一个新的返回栈来管理这个活动
RecyclerView的简单使用
1、创建ViewHolder
2、创建Adapter实现3个方法
3、设置RecyclerView
广播的两种类型
1、标准广播:完全异步执行的广播
2、有序广播:同步执行的广播,可被截断
Notification
private void sendNotification() {
//获取NotificationManager实例
NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//实例化NotificationCompat.Builde并设置相关属性
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
//设置小图标
.setSmallIcon(R.mipmap.icon_fab_repair)
//设置通知标题
.setContentTitle("最简单的Notification")
//设置通知内容
.setContentText("只有小图标、标题、内容")
//设置通知时间,默认为系统发出通知的时间,通常不用设置
//.setWhen(System.currentTimeMillis());
//通过builder.build()方法生成Notification对象,并发送通知,id=1
notifyManager.notify(1, builder.build());
}
事件处理机制
1、基于监听的事件处理:例如重写onclick方法
2、基于回调的事件处理:例如自定义Button类重写onKeyDown方法,然后在布局文件内引入该自定义组件
Handler
1、在新启动的线程中发送消息 sendMessage方法
2、在主线程中获取、处理消息 重写handleMessage方法
*在新线程中创建handler时必须先创建looper,之后还要调用Looper.loop()
AsyncTask
通过调用execute方法开始处理异步任务.相当于线程中的start方法.
onPreExecute() //此方法会在后台任务执行前被调用,用于进行一些准备工作
doInBackground(Params… params) //此方法中定义要执行的后台任务,在这个方法中可以调用publishProgress来更新任务进度(publishProgress内部会调用onProgressUpdate方法)
onProgressUpdate(Progress… values) //由publishProgress内部调用,表示任务进度更新
onPostExecute(Result result) //后台任务执行完毕后,此方法会被调用,参数即为后台任务的返回结果
onCancelled() //此方法会在后台任务被取消时被调用
以上方法中,除了doInBackground方法由AsyncTask内部线程池执行外,其余方法均在主线程中执行。
Fragment与Activity数据交互
1、在Activity中创建bundle并调用Fragment的setArguments方法将Bundle数据包传给Fragment
2、Fragment中定义一个内部回调接口,再让Activity实现该回调接口,这样Fragment可调用该回调接口将数据传给Activity
Service的两个问题
1、Service不会专门启动一个单独的进程,Service与它所在应用位于同一个进程中。
2、Service不是一个新的线程,因此不应该在Service中直接处理耗时任务