Timer 类

定义

线程在后台线程中计划任务以供将来执行的工具。

[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 对象是一个后台线程,用于按顺序执行计时器的所有任务。 计时器任务应快速完成。 如果计时器任务完成时间过长,则计时器的任务执行线程会“占用”。 反过来,这可能会延迟后续任务的执行,这可能会在(如果)冒犯任务最终完成时“堆起来”并快速连续执行。

在对象的最后一个实时引用 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 中添加。

Java文档java.util.Timer

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

名称 说明
Timer()

创建新的计时器。

Timer(Boolean)

创建一个新的计时器,该计时器可将关联的线程指定为 Thread#setDaemon 作为守护程序运行。

Timer(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

Timer(String, Boolean)

创建一个新的计时器,其关联的线程具有指定的名称,并且可以指定给 Thread#setDaemon 作为守护程序运行。

Timer(String)

创建关联的线程具有指定名称的新计时器。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
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)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

线程在后台线程中计划任务以供将来执行的工具。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于