大家可以关注一下小编,小编以后会一直更新Android相关技术资料文章。
Android面试题集锦之Service_第1张图片

Android基本知识点

1、常规知识点
1、 Android类加载器

Android面试题集锦之Service_第2张图片
在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。
Android面试题集锦之Service_第3张图片

IntentService

IntentService是一个抽象类,继承自Service,内部存在一个ServiceHandler(Handler)和HandlerThread(Thread)。IntentService是处理异步请求的一个类,在IntentService中有一个工作线程(HandlerThread)来处理耗时操作,启动IntentService的方式和普通的一样,不过当执行完任务之后,IntentService会自动停止。另外可以多次启动IntentService,每一个耗时操作都会以工作队列的形式在IntentService的onHandleIntent回调中执行,并且每次执行一个工作线程。IntentService的本质是:封装了一个HandlerThread和Handler的异步框架。

更多相关文章

  1. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态
  2. 第3.3.1节 处理手势操作
  3. Android中数据存储——文件存储数据
  4. Android音频系统之AudioPolicyService的启动及audio_policy.conf
  5. Android 动态加载APK--代码安装、获取安装包中的资源及Intent调
  6. Android 中LayoutInflater(布局加载器)之介绍篇
  7. 深入探究Android的WebView下载网络文件的盗链问题

随机推荐

  1. 阅读《Android 从入门到精通》(28)——使用
  2. 安装Android开发环境
  3. 性能优化--overdraw优化
  4. Android 界面淡出 淡入效果
  5. Android中启动第三方程序的代码
  6. Android之Uri转化为Bitmap,一行代码
  7. Android:BroadcastReceiver:采用广播接收者
  8. Android中的基础组件
  9. Android5.1 Camera Framework(一)
  10. Android--IntentService简介