Timer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
线程在后台线程中计划任务以供将来执行的工具。
[Android.Runtime.Register("java/util/Timer", DoNotGenerateAcw=true)]
public class Timer : Java.Lang.Object
[<Android.Runtime.Register("java/util/Timer", DoNotGenerateAcw=true)>]
type Timer = class
inherit Object
- 继承
- 属性
注解
线程在后台线程中计划任务以供将来执行的工具。 任务可以计划一次性执行,或定期重复执行。
对应于每个 Timer 对象是一个后台线程,用于按顺序执行计时器的所有任务。 计时器任务应快速完成。 如果计时器任务完成时间过长,则计时器的任务执行线程会“占用”。 反过来,这可能会延迟后续任务的执行,这可能会在(如果)冒犯任务最终完成时“堆起来”并快速连续执行。
在对象的最后一个实时引用 Timer 消失 并且 所有未完成的任务都已完成执行后,计时器的任务执行线程会正常终止(并受到垃圾回收的约束)。 但是,这可能需要任意长的时间才能发生。 默认情况下,任务执行线程不会作为 守护程序线程运行,因此它能够阻止应用程序终止。 如果调用方希望快速终止计时器的任务执行线程,调用方应调用计时器 cancel 的方法。
例如,如果计时器的任务执行线程意外终止,因为它 stop 的方法被调用,则任何进一步尝试在计时器上计划任务都将导致一个 IllegalStateException,就好像调用了计时器 cancel 的方法一样。
此类是线程安全的:多个线程可以共享单个 Timer 对象,而无需外部同步。
此类 不提供 实时保证:它使用 Object.wait(long) 该方法计划任务。
Java 5.0 引入了java.util.concurrent包,其中一个并发实用工具是java.util.concurrent.ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor线程池,用于以给定速率或延迟重复执行任务。 它实际上是一个更通用的组合Timer/TimerTask替代,因为它允许多个服务线程,接受各种时间单位,不需要子分类TimerTask(只需实现)。Runnable 使用一个线程进行配置 ScheduledThreadPoolExecutor 使其等效 Timer于 。
实现说明:此类扩展到大量并发计划的任务(数千个不应显示任何问题)。 在内部,它使用二进制堆来表示其任务队列,因此计划任务的成本为 O(log n),其中 n 是并发计划的任务数。
实现说明:所有构造函数都启动计时器线程。
已在 1.3 中添加。
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| 名称 | 说明 |
|---|---|
| Timer() |
创建新的计时器。 |
| Timer(Boolean) |
创建一个新的计时器,该计时器可将关联的线程指定为 Thread#setDaemon 作为守护程序运行。 |
| Timer(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
| Timer(String, Boolean) |
创建一个新的计时器,其关联的线程具有指定的名称,并且可以指定给 Thread#setDaemon 作为守护程序运行。 |
| Timer(String) |
创建关联的线程具有指定名称的新计时器。 |
属性
| 名称 | 说明 |
|---|---|
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| JniPeerMembers |
线程在后台线程中计划任务以供将来执行的工具。 |
| PeerReference |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
| 名称 | 说明 |
|---|---|
| Cancel() |
终止此计时器,放弃任何当前计划的任务。 |
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Dispose() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| Dispose(Boolean) |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| Purge() |
从此计时器的任务队列中删除所有已取消的任务。 |
| Schedule(TimerTask, Date, Int64) |
计划从指定时间开始的重复 固定延迟执行指定的任务。 |
| Schedule(TimerTask, Date) |
计划指定任务,以便在指定时间执行。 |
| Schedule(TimerTask, Int64, Int64) |
计划指定的任务以重复 的固定延迟执行,从指定延迟之后开始。 |
| Schedule(TimerTask, Int64) |
计划指定的任务,以便在指定的延迟后执行。 |
| ScheduleAtFixedRate(TimerTask, Date, Int64) |
计划从指定时间开始的重复 固定速率执行指定的任务。 |
| ScheduleAtFixedRate(TimerTask, Int64, Int64) |
计划指定的任务以重复 的固定速率执行,从指定的延迟开始。 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| ToArray<T>() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.Finalized() |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
线程在后台线程中计划任务以供将来执行的工具。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
线程在后台线程中计划任务以供将来执行的工具。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |