android基础
1.数据库的操作类型有哪些,如何导入外部数据库?
把原数据库包括在项目源码的 res/raw
android
系统下数据库应该存放在 /data/data/com.*.*(package name)/
目录下,所以我们需要做的是把已有的数据库传入那个目录下.操作方法是用FileInputStream
读取原数据库,再用FileOutputStream
把读取到的东西写入到那个目录.
2.是否使用过本地广播,和全局广播有什么差别?
因广播数据在本应用范围内传播,不用担心隐私数据泄露的问题。 不用担心别的应用伪造广播,造成安全隐患。 相比在系统内发送全局广播,它更高效。
3.是否使用过intentServer
,作用是什么,AIDL
解决了什么问题?(小米)
生成一个默认的且与主线程互相独立的工作者线程来执行所有传送至 `onStartCommand() `方法的`Intetnt`。
生成一个工作队列来传送Intent对象给你的`onHandleIntent()`方法,同一时刻只传送一个`Intent`对象,这样一来,你就不必担心多线程的问题。
在所有的请求(Intent)都被执行完以后会自动停止服务,所以,你不需要自己去调用`stopSelf()`方法来停止该服务
提供了一个`onBind()`方法的默认实现,它返回null
提供了一个`onStartCommand()`方法的默认实现,它将`Intent`先传送至工作队列,然后从工作队列中每次取出一个传送至`onHandleIntent()`方法,在该方法中对Intent对相应的处理。
AIDL (Android Interface Definition Language)
是一种IDL
语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)
的代码。如果在一个进程中(例如Activity
)要调用另一个进程中(例如Service
)对象的操作,就可以使用AIDL
生成可序列化的参数。 AIDL IPC
机制是面向接口的,像COM
或Corba
一样,但是更加轻量级。它是使用代理类在客户端和实现端传递数据。
4.Activity、Window、View
三者的差别,fragment
的特点?(360)
Activity
像一个工匠(控制单元),Window
像窗户(承载模型),View
像窗花(显示视图) LayoutInflater
像剪刀,Xml
配置像窗花图纸。
- 在
Activity
中调用attach
,创建了一个Window
- 创建的
window
是其子类PhoneWindow
,在attach中创建PhoneWindow
- 在
Activity
中调用setContentView(R.layout.xxx)
- 其中实际上是调用的
getWindow().setContentView()
- 调用
PhoneWindow
中的setContentView
方法 - 创建
ParentView
:作为ViewGroup
的子类,实际是创建的DecorView(
作为FramLayout
的子类) - 将指定的
R.layout.xxx
进行填充通过布局填充器进行填充【其中的parent
指的就是DecorView
】 - 调用到
ViewGroup
- 调用
ViewGroup的removeAllView()
,先将所有的view移除掉 - 添加新的
view:addView()
关于文中所说到的知识点,我都放在GitHub上了,如有需要,可自行查看。
同时我也推荐一下我的Android交流裙Android技术交流,不仅可以免费获取资料,而且还能有一帮大佬为你摆平关于Android的技术问题~
fragment 特点
Fragment
可以作为Activity界面的一部分组成出现;- 可以在一个
Activity
中同时出现多个Fragment
,并且一个Fragment
也可以在多个Activity
中使用; - 在
Activity
运行过程中,可以添加、移除或者替换Fragment
; Fragment
可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity
的生命周期影响。
5.描述一次网络请求的流程(新浪)
6.Handler、Thread
和HandlerThread
的差别(小米)
http://blog.csdn.net/guolin_blog/article/details/9991569
http://droidyue.com/blog/2015/11/08/make-use-of-handlerthread/
从Android
中Thread(java.lang.Thread -> java.lang.Object)
描述可以看出,Android
的Thread
没有对Java
的Thread
做任何封装,但是Android
提供了一个继承自Thread
的类HandlerThread(android.os.HandlerThread -> java.lang.Thread)
,这个类对Java
的Thread做了很多便利Android
系统的封装。
android.os.Handler
可以通过Looper
对象实例化,并运行于另外的线程中,Android
提供了让Handler
运行于其它线程的线程实现,也是就HandlerThread
。HandlerThread
对象start后可以获得其Looper
对象,并且使用这个Looper
对象实例Handler
。
7.低版本SDK实现高版本api
(小米)
自己实现或@TargetApi annotation
8.编译安卓系统(百度)
1.创建一个大小写敏感的磁盘镜像文件 2.首先你要安装的就是Xcode 3.
从macports.org
安装MacP