Android面试必备:Handler、Thread与Runnable解析

版权申诉
5星 · 超过95%的资源 1 下载量 54 浏览量 更新于2024-08-12 收藏 47KB DOC 举报
"这篇文档包含了Android面试的相关问题和答案,主要涉及多线程编程中的Handler、Thread和Runnable的关系,以及如何将应用程序设置为系统级别应用的两种方法。" 在Android开发中,多线程编程是必不可少的部分,尤其在处理耗时操作时,以避免阻塞主线程(UI线程)。Handler、Thread和Runnable三者之间有密切的关系。Handler是用来在不同的线程之间发送和处理消息的,通常与Looper配合工作。Thread是Java的基础线程类,而Runnable是一个接口,它定义了run()方法,任何实现Runnable接口的类都可以作为一个任务在Thread中运行。Thread本身实现了Runnable接口,所以可以直接将Thread对象传递给Thread的构造函数来启动新线程。HandlerThread是一个特殊的Thread,它内部已经初始化了Looper,因此可以直接用于处理消息循环。 在Android中,通常有两种方式创建新线程:直接创建Thread对象并调用start()方法,或者使用Handler结合Runnable。在UI线程内,通过new Handler()创建的Handler会关联到主线程的Looper,而在Handler的post()方法中传入的Runnable会在主线程中执行,不会开启新的线程。 要将应用程序设置为系统级别的应用,主要是为了获取更高的权限,例如修改系统时间等。这通常涉及到对APK的签名和系统权限的设定。有两种方法可以实现: 1. 在Android源码环境中编译APK: - 在AndroidManifest.xml中添加`android:sharedUserId="android.uid.system"`属性,表示应用与系统共享用户ID。 - 修改Android.mk文件,添加`LOCAL_CERTIFICATE:=platform`,这表示使用平台签名来签名应用。 - 使用`mm`命令编译项目,生成的APK将具有系统权限。 2. 使用系统签名文件签名已编译的APK: - 同样在AndroidManifest.xml中添加`android:sharedUserId="android.uid.system"`。 - 使用Eclipse或Android Studio编译APK。 - 找到Android系统的签名文件,使用该签名文件重新签名APK。这通常需要对系统有一定级别的访问权限。 请注意,将应用设置为系统级别需谨慎,因为这样可能会对设备的安全性和稳定性产生影响。只有在确实需要这些高级权限时,才应采取这种方法。在面试中,候选人需要理解这些概念并能够正确地解释它们在实际开发中的应用。