Jar包里面只有代码,Aar包里面不止有代码,还有资源,如图片,XML等。对于一些不常变动的Android库文件,建议直接引入AAR,加快编译速度。
2.安卓几种更新UI的方式
1.Activity.runOnUiThread(Runnable);
2.View.post(Runnable),View.postDelay(Runnable,long)(可以理解为在当前视图UI线程添加队列)
3.Handler
4.AsyncTask
5.Rxjava
6.LiveData
3.ContentProvider的理解
ContentProvider是安卓四大组件之一,主要用于跨应用通信,实现应用之间数据交互和共享。
4.Thread,AsyncTask,IntentService的使用场景
1.Thread线程,独立运行于Activity,当Activity被销毁时,如果Thread线程没有运行完,且没有主动停止,那么它会继续执行下去。
2.AsyncTask封装了两个线程池和一个Handler,其必须在UI线程中创建,execute方法必须在UI线程中执行,一个任务实例只允许执行一次,执行多次会抛出异常。用于网络请求和简单的数据处理。
3.IntentService:处理异步请求,实现多线程,处理耗时操作。
5.Activity的startActivity和context的startActivity有什么区别
在其他context(如:service中)中调用startActivity方法,必须设置setFlag():
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ;
mContext.startActivity(intent);
在Activity中,就不用,可以直接调用。
6.在Service中创建对话框
1.取得Dialog对象后,需要给它设置类型;
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
2.在Manifest中添加权限;
7.Asset和res两者目录的区别
Asset:不会在R文件中生成对应标记,打包时会将资源加入安装包中。
res:会在R文件中生成id标记,打包时,使用到的资源才会打包到安装包中。
8.安卓如何加速启动Activity
1.不在onCreate() 方法里面做耗时操作;
2.不要阻塞主线程,可以尽量使用子线程做耗时操作;
3.优化布局页面
4.提高Adapter和AdapterView效率。