StupidBeauty
Read times:2715Posted at: - no title specified

安卓22开发文档翻译:白日梦服务,DreamService

extends  Service
implements 
Window.Callback

类概述

继承这个类,就可以实现一个自定义的白日梦。

白日梦,指的是,在以下情况下启动的交互式屏幕保护程序:一个充电的设备处于空闲状态;或者设备被放置到桌面托架上。白日梦,为应用程序提供了另一种展现形式,可专门用于在展览形式下表现自身。

DreamService 的生命周期如下所示:

  1. 1. onAttachedToWindow()

    用来进行初始设置 ,例如调用 setContentView()

  2. 2. onDreamingStarted()

    妳的白日梦已经开始,所以,妳应当启动动画及其它行为了。

  3. 3. onDreamingStopped()

    在此处停止那些妳曾在 onDreamingStarted() 中启动的东西。

  4. 4. onDetachedFromWindow()

    在此处销毁资源(例如,解除处理器和监听器)

另外onCreateonDestroy(作为Service接口的一部分)也会被调用,但是,初始化和收尾工作应当在上面所说的那些钩子中进行。

为了让系统得知妳的白日梦的存在,应当 在清单文件中像下面这样声明妳的 DreamService

<service

android:name = ".MyDream"

android:exported = "true"

android:icon = "@drawable/my_icon"

android:label = "@string/my_dream_label" >

<intent-filter>

<action android:name = "android.service.dreams.DreamService" />

<category android:name = "android.intent.category.DEFAULT" />

</intent-filter>

<!-- 指向关于 这个白日梦的更多信息 (可选) -->

<meta-data

android:name = "android.service.dream"

android:resource = "@xml/my_dream" />

</service>

如果加上 了一个 <meta-data> 元素 ,则表明, 会在一个单独的XML 文件中使用 <dream> 元素来定义关于该白日梦的额外信息。目前 ,妳能够提供的唯一一个额外信息就是, 可以提供一个设置活动,使得用户 对该白日梦的行为做出配置。例如:

res/xml/my_dream.xml

<dream xmlns:android = "http://schemas.android.com/apk/res/android"

android:settingsActivity = "com.example.app/.MyDreamSettingsActivity" />

这样的话,在系统设置界面中,妳的白日梦旁边会出现一个设置按钮,用户点击这个按钮就会打开这里所指定的活动。

要指定妳的白日梦布局的话,则,一般是在 onAttachedToWindow() 回调方法中调用 setContentView(View) 。例如

public class MyDream extends DreamService {

@Override

public void onAttachedToWindow () {

super . onAttachedToWindow ();

// 当用户点击时即退出白日梦

setInteractive ( false );

// 隐藏系统界面

setFullscreen ( true );

// 设置白日梦 的布局

setContentView ( R . layout . dream );

}

}

如果目标系统 的应用编程级别为 21 及更高版本,则, 妳必须在清单文件中为妳的服务声明 BIND_DREAM_SERVICE 权限。例如

<service

android:name = ".MyDream"

android:exported = "true"

android:icon = "@drawable/my_icon"

android:label = "@string/my_dream_label"

android:permission = "android.permission.BIND_DREAM_SERVICE" >

<intent-filter>

<action android:name = ”android.service.dreams.DreamService” />

<category android:name = ”android.intent.category.DEFAULT” />

</intent-filter>

</service>

公有方法

public void  onAttachedToWindow  ()

自此版本开始引入 应用编程接口级别17

当窗口被关联到窗口管理器的时候,会调用此方法。参考 View.onAttachedToWindow() 以了解更多信息。

public void  onDetachedFromWindow  ()

自此版本开始引入 应用编程接口级别17

当窗口与窗口管理器解除关联时,会调用此方法。参考 View.onDetachedFromWindow() 以了解更多信息。

public void onDreamingStarted ()

自此版本开始引入 应用编程接口级别17

在以下时机被调用:此白日梦的窗口已经被创建,并且处于可见状态,现在可以开始动画了。

public void onDreamingStopped ()

自此版本开始引入 应用编程接口级别17

当这个白日梦停止时调用此方法,可能的原因是:外部请求;或,在窗口还未被移除的情况下,调用finish()。 window has been removed.

public void  onWakeUp  ()

自此版本开始引入 应用编程接口级别21

在以下时机会调用此方法:该白日梦被要求停止,并醒来。

在默认实现中,只是简单的调用 finish() ,它会立即停止该白日梦。子类 可以覆盖这个函数,以呈现出一个平滑的退出效果,然后再调用 finish()

注意,白日梦只会被给予一段短暂的时间(目前是大约5秒)来友好地醒来。如果白日梦没有按时醒来,则,系统会在时间用完之后强制结束它。

public void  setContentView  ( View  view)

自此版本开始引入 应用编程接口级别17

将某个视图设置为这个白日梦的内容视图。与活动(activity)中 setContentView(android.view.View) 的行为类似,包括使用 MATCH_PARENT 作为该视图的布局高度和宽度。

注意 :这个方法要求有一个窗口存在,所以, 妳通常应当在 onAttachedToWindow() 中调用这个方法,而不能在更早的时候调用它( 不能 onCreate() 中调用它 )。

参考

public void setContentView (int layoutResID)

自此版本开始引入 应用编程接口级别17

实例 化一个布局资源,并且将它设置为这个白日梦的内容视图。行为类似 setContentView(int)

注意 :这个方法要求有一个窗口存在,因此不可以在 onAttachedToWindow() 之前调用。

参数

layoutResID

要实例化的资源编号。

参考

public final void  wakeUp  ()

自此版本开始引入 应用编程接口级别21

友好地让这个白日梦醒来。

会调用 onWakeUp() 以给予该白日梦一个机会来做一个平滑的退出效果。 当退出效果结束时, 该白日梦应当调用 finish()

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4