Android Q (十二) Bubbles

Bubbles

 

Bubbles 是Android Q中的一项新功能。通过Bubbles ,用户可以轻松地从设备上的任何位置进行多任务处理。Bubbles 内置于通知系统中。它们会浮动在其他应用内容之上,并随时随地关注用户。可以扩展Bubbles 以显示应用程序功能和信息,并且可以在不使用时折叠。

当设备被锁定或始终显示处于活动状态时,Bubbles 就会像通常那样出现。

Bubbles 是一种选择退出功能。当应用程序显示其第一个Bubbles 时,会显示一个权限对话框,提供两个选项:

  • 阻止您应用中的所有Bubbles  - 通知不会被阻止,但它们永远不会显示为Bubbles 
  • 允许您应用中的所有Bubbles  - 所有发送的通知BubbleMetaData都会显示为Bubbles 

Bubble API

通过Notification API创建Bubbles ,您可以正常发送通知。如果你想让它冒泡,你需要附加一些额外的数据。

Bubbles 的展开视图是根据您选择的活动创建的。需要将Activity配置为正确显示为气泡。活动必须可以 调整大小, 嵌入并始终以文档UI模式启动。如果它缺少任何这些要求,它将显示为通知。

以下代码演示了如何实现简单的bubble

  android:name=".bubbles.BubbleActivity"

  android:theme="@style/AppTheme.NoActionBar"

  android:label="@string/title_activity_bubble"

  android:allowEmbedded="true"

  android:documentLaunchMode="always"

  android:resizeableActivity="true"

/>

 

如果您的应用显示多个相同类型的气泡,例如与不同联系人的多个聊天对话,则该活动必须能够启动多个实例。将documentLaunchMode设置 为“always”。

要发送气泡,请按以下步骤操作:

  • 像往常一样创建通知。
  • 调用Notification.BubbleMetadata.Builder以创建BubbleMetadata对象。
  • 使用setBubbleMetadata 元数据添加到通知。

   

// Create bubble intent

val target = Intent(context, BubbleActivity::class.java)

val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0 /* flags */)

 

// Create bubble metadata

val bubbleData = Notification.BubbleMetadata.Builder()

    .setDesiredHeight(600)

    // Note: although you can set the icon is not displayed in Q Beta 2

    .setIcon(Icon.createWithResource(context, R.drawable.icon))

    .setIntent(bubbleIntent)

    .build()

 

// Create notification

val chatBot = Person.Builder()

    .setBot(true)

    .setName("BubbleBot")

    .setImportant(true)

    .build()

 

val builder = Notification.Builder(context, CHANNEL_ID)

    .setContentIntent(contentIntent)

    .setSmallIcon(smallIcon)

    .setBubbleMetadata(bubbleData)

 

注意:第一次发送通知以显示气泡时,它必须位于通知通道中IMPORTANCE_HIGH。这是因为通知重要性管理器处理气泡。如果系统在用户有机会允许或阻止气泡之前降低了通知的重要性,则通知不会冒泡。

如果您的应用在发送气泡时位于前台,则会忽略重要性并始终显示您的气泡(除非用户阻止了应用中的气泡或通知)。

创建扩展的泡沫

您可以配置气泡以自动将其呈现为展开状态。我们建议仅在用户执行可能导致冒泡的操作时使用此功能,例如点按按钮以开始新聊天。在这种情况下,抑制创建气泡时发送的初始通知也是有意义的。

您可以使用一些方法来设置启用这些行为的标志: setAutoExpandBubble() 

setSuppressInitialNotification()。

 

注意:虽然您可以在Android Q Beta 2中设置这些标记,但它们还没有任何效果。

val bubbleMetadata = Notification.BubbleMetadata.Builder()

    .setDesiredHeight(600)

    .setIntent(bubbleIntent)

    .setAutoExpandBubble(true)

    .setSuppressInitialNotification(true)

    .build()

 

泡泡内容生命周期

当扩展气泡时,内容活动将经历正常的 流程生命周期,从而导致应用程序成为前台流程(如果尚未实现)。

当气泡坍塌或解散时,活动将被破坏。这可能导致进程被缓存并随后被杀死,具体取决于应用程序是否有任何其他前台组件在运行。

最佳做法

  • Bubbles占据屏幕空间并覆盖其他应用程序内容。您应该只发送通知作为气泡,如果它足够重要,例如正在进行的通信,或者用户明确要求某些内容的气泡。
  • 请注意,用户可以禁用气泡。在这种情况下,气泡通知显示为正常通知。您应该始终确保您的气泡通知也可以作为正常通知。
  • 从气泡启动的进程(例如活动和对话框)出现在气泡容器中。这意味着泡泡可以有任务堆栈。如果您的泡泡中有很多功能或导航,事情会变得复杂。我们建议尽可能保持功能的特定和轻量级。

你可能感兴趣的:(android,版本更新,android,Q)