1. 既然RecyclerView在很多方面能取代ListView,Google为什么没把ListView画上一条过时的横线?
- ListView采用的是RecyclerBin的回收机制,在一些轻量级的List显示时效率很高。
- 在处理少量数据使用ListView
- 在处理大量数据的时候使用RecyclerView
2. Android的四大组件都需要在清单文件中注册吗? 并简述四大组件
Activity,Service,ContentProvider如果要使用则必须在AndroidManifest.xml中进行注册,而BroadcastReceiver则有两种注册方式,静态注册和动态注册。其中静态注册就是指在AndroidManifest.xml中进行注册,而动态注册时通过代码注册。
Activity:通常展现为一个用户操作的可视化界面。它为用户提供了一个完成操作指令的窗口。
Service:Android系统的服务(不是一个线程,是主程序的一部分),与Activity不同,它是不能与用户交互的,不能自己启动的,需调用Context.startService()来启动,执行后台,假设我们退出应用时,Service进程并没有结束,它仍然在后台运行。
BroadcastReceiver:广播接收器是一个专注于接收广播通知信息,并做出相应处理的组件。
ContentProvider: (内容提供者)主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其它应用访问,其它应用能够通过ContentProvider对指定应用中的数据进行操作。
3. 四种LaunchMode及其使用场景
-
standard
模式这是默认模式,每次激活Activity
时都会创建Activity
实例,并放入任务栈中。使用场景: 大多数Activity
。 -
singTop
模式如果在任务栈的栈顶正好存在该Activity
的实例,就重用该实例(会调用实例的onNewIntent()
),否则就会创建新的实例并放入栈顶,即使栈中已经存在该Activity
的实例,只要不在栈顶,都会创建新的实例。使用场景如新闻类或者阅读类App
的内容页面。 -
singleTask
模式如果在栈中已经有该Activity
的实例,就重用该实例(会调用实例的onNewIntent()
)。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中。使用场景如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent
,并且会清空主界面上面的其他页面。 -
singleInstance
模式在一个新栈中创建该Activity
的实例,并让多个应用共享该栈中的该Activity
实例。一旦该模式的Activity
实例已经存在于某个栈中,任何应用再激活该Activity
时都会重用该栈中的实例(会调用实例的onNewIntent()
)。其效果相当于多个应用共享一个应用,不管谁激活该Activity
都会进入同一个应用中。使用场景如闹铃提醒,将闹铃提醒与闹铃设置分离。singleInstance
不要用于中间页面,跳转会有问题,比如:A -> B(singleInstance) -> C
,完全退出后,再次启动,首先打开的是B
。
网友评论