Android基本知识点【Android面试题集锦之 Service】1、常规知识点
1、 Android类加载器
文章插图
在Android开发中,不管是插件化还是组件化,都是基于Android系统的类加载器ClassLoader来设计的 。只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个JAVA源码文件会生成一个.class文件,而Android是把所有Class文件进行合并、优化,然后再生成一个最终的class.dex,目的是把不同class文件重复的东西只需保留一份,在早期的Android应用开发中,如果不对Android应用进行分dex处理,那么最后一个应用的apk只会有一个dex文件 。
Android中常用的类加载器有两种,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader 。区别在于调用父类构造器时,DexClassLoader多传了一个optimizedDirectory参数,这个目录必须是内部存储路径,用来缓存系统创建的Dex文件 。而PathClassLoader该参数为null,只能加载内部存储目录的Dex文件 。所以我们可以用DexClassLoader去加载外部的apk文件,这也是很多插件化技术的基础 。
2、 Service
理解Android的Service,可以从以下几个方面来理解:
Service是在main Thread中执行,Service中不能执行耗时操作(网络请求,拷贝数据库,大文件) 。
可以在xml中设置Service所在的进程,让Service在另外的进程中执行 。
Service执行的操作最多是20s,BroadcastReceiver是10s,Activity是5s 。
Activity通过bindService(Intent,ServiceConnection,flag)与Service绑定 。
Activity可以通过startService和bindService启动Service 。
IntentServiceIntentService是一个抽象类,继承自Service,内部存在一个ServiceHandler(Handler)和HandlerThread(Thread) 。IntentService是处理异步请求的一个类,在IntentService中有一个工作线程(HandlerThread)来处理耗时操作,启动IntentService的方式和普通的一样,不过当执行完任务之后,IntentService会自动停止 。另外可以多次启动IntentService,每一个耗时操作都会以工作队列的形式在IntentService的onHandleIntent回调中执行,并且每次执行一个工作线程 。IntentService的本质是:封装了一个HandlerThread和Handler的异步框架 。
推荐阅读
- 怎样搭高质量的Android项目框架,框架的结构具体描述?
- JS刷新当前页面的几种方法总结
- 挂烫机里面的青苔怎么清理 挂烫机长青苔可以用除苔剂吗
- 小米手机的设置里面有OTG吗 小米手机找不到otg怎么回事
- 兵马俑总面积 兵马俑的数量有多少
- 莫代尔,今夏少不了的面料
- 普洱茶什么时候喝减肥 主要来自两个方面的因素
- 科技基建正当时,消费电子和面板景气回升
- 抖音里面东西可以买吗 抖音上买的洗衣纸片有用吗
- 茶汤表面的泡沫是什么