Android面试题(31-35)

31、什么是 Broadcast?

Broadcast是Android中的一种消息传递机制,可以在不同组件之间传递消息。Broadcast分为两种类型:标准广播(normal broadcast)和有序广播(ordered broadcast)。

标准广播是一种完全异步的广播方式,所有接收器都会在同一时间接收到广播,并且接收器之间没有任何优先级关系。

有序广播是一种有序的广播方式,可以通过给接收器设置优先级,来实现先后顺序。接收器可以通过abortBroadcast()方法来终止广播的传递。

32、什么是 StickyBroadcast?

StickyBroadcast是一种特殊的广播类型,在发送广播时,系统会把这个广播的Intent缓存起来,当有新的接收器注册时,会立即把缓存的Intent发送给它。这种广播类型的主要应用场景是在程序未启动的情况下,启动程序时需要接收之前发送的广播。

需要注意的是,Android 8.0之后,StickyBroadcast被废弃了,不能再使用了。建议使用其它的替代方式,比如使用SharedPreferences、ContentProvider或者JobScheduler等。

33、什么是 LocalBroadcastManager?

LocalBroadcastManager是Android支持库中的一个类,用于实现应用内部的广播机制。相比于全局广播,LocalBroadcastManager的优点是更加高效、安全和隐私保护。

LocalBroadcastManager可以确保广播只会在应用内部传递,而不会暴露给其它应用,因此可以避免一些潜在的安全问题。另外,LocalBroadcastManager的使用方式和普通广播是一样的,因此可以轻松地在应用中使用它来实现消息传递。

34、什么是 Bundle?

Bundle是Android中用于存储数据的一种容器,可以存储各种基本类型和复杂类型的数据,比如int、String、Parcelable等。

在Android开发中,Bundle通常用于在不同组件之间传递数据,比如在Activity之间传递数据。Bundle可以通过putXXX()方法来存储数据,通过getXXX()方法来获取数据。

35、什么是 Parcelable?

Parcelable是Android中用于实现对象序列化的一种接口,实现了Parcelable接口的类可以将自己的对象序列化成一个可传递的数据块,可以通过Intent、Bundle等方式在不同组件之间传递。

相比于Java中的Serializable接口,Parcelable更加高效,因为它是基于内存的序列化方式,而不是基于IO的序列化方式。因此,在需要频繁传递大量数据时,推荐使用Parcelable来实现对象序列化。