Handler Kelas

Definisi

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

[Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)]
public class Handler : Java.Lang.Object
[<Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)>]
type Handler = class
    inherit Object
Warisan
Turunan
Atribut

Keterangan

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue. Setiap instans Handler dikaitkan dengan satu utas dan antrean pesan utas tersebut. Ketika Anda membuat Handler baru, itu terikat ke Looper. Ini akan mengirimkan pesan dan runnable ke antrean pesan Looper itu dan menjalankannya pada utas Looper itu.

Ada dua kegunaan utama untuk Handler: (1) untuk menjadwalkan pesan dan runnable yang akan dijalankan pada beberapa titik di masa mendatang; dan (2) untuk mengantrekan tindakan yang akan dilakukan pada utas yang berbeda dari utas Anda sendiri.

Penjadwalan pesan dicapai dengan #postmetode , , #postAtTime(Runnable, long), #postDelayed#sendEmptyMessage, #sendMessage, #sendMessageAtTime, dan #sendMessageDelayed . Versi <em>post</em> memungkinkan Anda untuk mengantrekan objek yang dapat dijalankan untuk dipanggil oleh antrean pesan ketika diterima; <versi em>sendMessage</em> memungkinkan Anda untuk mengantrekan Message objek yang berisi bundel data yang akan diproses oleh metode Handler #handleMessage (mengharuskan Anda menerapkan subkelas Handler).

Saat memposting atau mengirim ke Handler, Anda dapat mengizinkan item diproses segera setelah antrean pesan siap untuk melakukannya, atau menentukan penundaan sebelum diproses atau waktu absolut untuk diproses. Dua yang terakhir memungkinkan Anda menerapkan batas waktu, kutu, dan perilaku berbasis waktu lainnya.

Ketika proses dibuat untuk aplikasi Anda, utas utamanya didedikasikan untuk menjalankan antrean pesan yang mengurus pengelolaan objek aplikasi tingkat atas (aktivitas, penerima siaran, dll) dan jendela apa pun yang mereka buat. Anda dapat membuat utas Anda sendiri, dan berkomunikasi kembali dengan utas aplikasi utama melalui Handler. Ini dilakukan dengan memanggil metode em<post/em> atau <em>sendMessage</em> yang sama <seperti sebelumnya, tetapi dari utas baru> Anda. Runnable atau Message yang diberikan kemudian akan dijadwalkan dalam antrean pesan Handler dan diproses jika sesuai.

<h2>Pertimbangan performa saat menggunakan Handler</h2>

Berhati-hatilah bahwa metode Handler "has" dan "remove" bisa sangat lambat karena operasi ini memindai seluruh antrean pesan yang tertunda. Jika yang mendasar LooperMessageQueue memiliki banyak pesan tertunda, ini bisa mahal.

<ul><li>Alih-alih menghapus pesan atau panggilan balik untuk membatalkan operasi yang tertunda, pertimbangkan untuk mengatur bendera untuk menunjukkan pembatalan dan meminta operasi memeriksa bendera sebelum melanjutkan. <li>Alih-alih memeriksa apakah antrean memiliki pesan atau panggilan balik untuk menemukan apakah operasi yang tertunda belum terjadi, pertimbangkan agar operasi tersebut menetapkan bendera untuk menunjukkan bahwa operasi telah dimulai. </ul>

Lihat java.util.concurrent untuk primitif konkurensi standar.

Java dokumentasi untuk android.os.Handler.

Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.

Konstruktor

Nama Deskripsi
Handler()

Konstruktor default mengaitkan handler ini dengan Looper untuk utas saat ini.

Handler(Action<Message>)

Menginisialisasi instans baru kelas Handler.

Handler(Handler+ICallback)

Konstruktor mengaitkan handler ini dengan Looper untuk utas saat ini dan mengambil antarmuka panggilan balik tempat Anda dapat menangani pesan.

Handler(IntPtr, JniHandleOwnership)

Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime.

Handler(Looper, Handler+ICallback)

Gunakan yang disediakan Looper alih-alih yang default dan ambil antarmuka panggilan balik untuk menangani pesan.

Handler(Looper)

Gunakan yang disediakan Looper alih-alih default.

Properti

Nama Deskripsi
Class

Mengembalikan kelas runtime dari .Object

(Diperoleh dari Object)
Handle

Handel ke instans Android yang mendasar.

(Diperoleh dari Object)
JniIdentityHashCode

Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop.

(Diperoleh dari Object)
JniManagedPeerState

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
JniPeerMembers

Menyediakan metadata anggota serekan JNI untuk jenis ini.

Looper

Mendapatkan nilai Looper.

PeerReference

Mendapatkan referensi objek JNI untuk peer Java ini.

(Diperoleh dari Object)
ThresholdClass

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

ThresholdType

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

Metode

Nama Deskripsi
Clone()

Membuat dan mengembalikan salinan objek ini.

(Diperoleh dari Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
CreateAsync(Looper, Handler+ICallback)

Buat Handler baru yang pesan yang diposting dan dapat dijalankan tidak tunduk pada hambatan sinkronisasi seperti tampilan vsync.

CreateAsync(Looper)

Buat Handler baru yang pesan yang diposting dan dapat dijalankan tidak tunduk pada hambatan sinkronisasi seperti tampilan vsync.

DispatchMessage(Message)

Tangani pesan sistem di sini.

Dispose()

Merilis sumber daya yang dipegang oleh rekan Java ini.

(Diperoleh dari Object)
Dispose(Boolean)

Merilis sumber daya yang dipegang oleh rekan Java ini.

(Diperoleh dari Object)
DisposeUnlessReferenced()

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
Dump(IPrinter, String)

Menulis status objek ini ke output yang disediakan.

DumpAsync(IPrinter, String)

Secara asinkron melakukan operasi yang sesuai.

Equals(Object)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
Equals(Object)

Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini.

(Diperoleh dari Object)
GetHashCode()

Mengembalikan nilai kode hash untuk objek .

(Diperoleh dari Object)
GetMessageName(Message)

Mengembalikan string yang mewakili nama pesan yang ditentukan.

HandleMessage(Message)

Subkelas harus menerapkan ini untuk menerima pesan.

HasCallbacks(IRunnable)

Periksa apakah ada posting pesan yang tertunda dengan callback r dalam antrean pesan.

HasMessages(Int32, Object)

Periksa apakah ada posting pesan yang tertunda dengan kode 'apa' dan yang obj-nya adalah 'objek' dalam antrean pesan.

HasMessages(Int32)

Periksa apakah ada posting pesan yang tertunda dengan kode 'apa' dalam antrean pesan.

JavaFinalize()

Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek.

(Diperoleh dari Object)
Notify()

Membangunkan satu utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
NotifyAll()

Membangunkan semua utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
ObtainMessage()

Mengembalikan baru android.os.Message Message dari kumpulan pesan global.

ObtainMessage(Int32, Int32, Int32, Object)

Sama seperti #obtainMessage(), kecuali juga mengatur nilai apa, obj, arg1, dan arg2 pada Pesan yang dikembalikan.

ObtainMessage(Int32, Int32, Int32)

Sama seperti #obtainMessage(), kecuali bahwa ia juga menetapkan anggota apa, arg1 dan arg2 dari Pesan yang dikembalikan.

ObtainMessage(Int32, Object)

Sama seperti #obtainMessage(), kecuali bahwa itu juga mengatur anggota apa dan obj dari Pesan yang dikembalikan.

ObtainMessage(Int32)

Sama seperti #obtainMessage(), kecuali juga mengatur anggota Pesan yang dikembalikan.

Post(Action)

Menambahkan yang dapat dijalankan ke antrean pesan handler ini.

Post(IRunnable)

Menyebabkan runnable r ditambahkan ke antrean pesan.

PostAtFrontOfQueue(Action)

Memposting yang dapat dijalankan untuk iterasi berikutnya dari antrean pesan handler ini.

PostAtFrontOfQueue(IRunnable)

Memposting pesan ke objek yang mengimplementasikan Runnable.

PostAtTime(Action, Int64)

Memposting runnable untuk dijalankan pada waktu aktif yang ditentukan.

PostAtTime(Action, Object, Int64)

Memposting runnable untuk dijalankan pada waktu aktif yang ditentukan.

PostAtTime(IRunnable, Int64)

Menyebabkan runnable r ditambahkan ke antrean pesan, dijalankan pada waktu tertentu yang diberikan oleh <var>uptimeMillis</var>.

PostAtTime(IRunnable, Object, Int64)

Menyebabkan runnable r ditambahkan ke antrean pesan, dijalankan pada waktu tertentu yang diberikan oleh <var>uptimeMillis</var>.

PostDelayed(Action, Int64)

Memposting runnable untuk dijalankan setelah penundaan yang ditentukan.

PostDelayed(IRunnable, Int64)

Menyebabkan r yang dapat dijalankan ditambahkan ke antrean pesan, dijalankan setelah jumlah waktu yang ditentukan berlalu.

PostDelayed(IRunnable, Object, Int64)

Menyebabkan r yang dapat dijalankan ditambahkan ke antrean pesan, dijalankan setelah jumlah waktu yang ditentukan berlalu.

RemoveCallbacks(Action, Object)

Menghapus panggilan balik yang tertunda untuk yang dapat dijalankan yang ditentukan.

RemoveCallbacks(Action)

Menghapus panggilan balik yang tertunda untuk yang dapat dijalankan yang ditentukan.

RemoveCallbacks(IRunnable, Object)

Hapus postingan yang tertunda dari Runnable <var>r</var> dengan token</var Object >var<> yang berada dalam antrean pesan.

RemoveCallbacks(IRunnable)

Hapus postingan yang tertunda dari Runnable r yang berada dalam antrean pesan.

RemoveCallbacksAndMessages(Object)

Hapus posting panggilan balik yang tertunda dan pesan terkirim yang var obj</var-nya> adalah <token>/var var<>.<>

RemoveMessages(Int32, Object)

Hapus posting pesan yang tertunda dengan kode 'apa' dan yang obj-nya adalah 'objek' yang berada dalam antrean pesan.

RemoveMessages(Int32)

Hapus postingan pesan yang tertunda dengan kode 'apa' yang ada dalam antrean pesan.

SendEmptyMessage(Int32)

Mengirim Pesan yang hanya berisi nilai apa.

SendEmptyMessageAtTime(Int32, Int64)

Mengirim Pesan yang hanya berisi nilai apa, yang akan dikirimkan pada waktu tertentu.

SendEmptyMessageDelayed(Int32, Int64)

Mengirim Pesan yang hanya berisi nilai apa, yang akan dikirimkan setelah jumlah waktu yang ditentukan berlalu.

SendMessage(Message)

Mendorong pesan ke akhir antrean pesan setelah semua pesan tertunda sebelum waktu saat ini.

SendMessageAtFrontOfQueue(Message)

Antrekan pesan di bagian depan antrean pesan, untuk diproses pada perulangan berikutnya dari perulangan pesan.

SendMessageAtTime(Message, Int64)

Antrekan pesan ke dalam antrean pesan setelah semua pesan tertunda sebelum waktu absolut (dalam milidetik) <var>uptimeMillis</var>.

SendMessageDelayed(Message, Int64)

Antrekan pesan ke dalam antrean pesan setelah semua pesan tertunda sebelumnya (waktu saat ini + penundaanMillis).

SetHandle(IntPtr, JniHandleOwnership)

Mengatur properti Handle.

(Diperoleh dari Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
ToArray<T>()

Membuat array terkelola dari pembungkus array Java ini.

(Diperoleh dari Object)
ToString()

Mengembalikan representasi string objek.

(Diperoleh dari Object)
UnregisterFromRuntime()

Membatalkan pendaftaran peer Java ini dari runtime interop.

(Diperoleh dari Object)
Wait()

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>.

(Diperoleh dari Object)
Wait(Int64, Int32)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu.

(Diperoleh dari Object)
Wait(Int64)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

Nama Deskripsi
IJavaPeerable.Disposed()

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
IJavaPeerable.Finalized()

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

(Diperoleh dari JavaObject)

Metode Ekstensi

Nama Deskripsi
GetJniTypeName(IJavaPeerable)

Mendapatkan nama JNI dari jenis instans self.

JavaAs<TResult>(IJavaPeerable)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Android.

JavaCast<TResult>(IJavaObject)

Handler memungkinkan Anda mengirim dan memproses Message dan menjalankan objek yang terkait dengan utas MessageQueue.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

Berlaku untuk