Isi kandungan:
- Menghantar tweet baru
- Di MyAsyncTaskTweet, parameter yang diluluskan ke doInBackground dianggap sebagai tweet. Tetapi dalam MyAsyncTaskTimeline, parameter yang diluluskan ke doInBackground adalah nama pengguna. Kod ini meluluskan nama pengguna ini kepada kaedah getUserTimeline.
Video: Thread and Async Task Android (Mobile Programing) 2025
AsyncTask adalah apa yang anda gunakan apabila sesuatu mengambil masa terlalu lama semasa menjalankan apl Android anda. Contohnya, pengguna meminta halaman web. Siapa tahu berapa lama masa untuk mengambil halaman? Perkhidmatan yang menjadi tuan rumah laman web mungkin mengalami kelantangan yang tinggi. Atau pengguna mungkin berada di kereta api melalui terowong.
Semua jenis perkara mungkin melambatkan pengambilan semula halaman. Dan semasa pengambilan semula ini, pengguna mungkin mahu mengklik butang, menatal dokumen, atau melakukan sesuatu yang menuntut tindak balas dari aplikasi anda.
Anda tidak boleh menghentikan persembahan semasa apl anda menunggu halaman web, menjana garis masa Twitter, atau mengemas kini status Twitter pengguna. Itulah sebabnya anda kod permintaan rangkaian di dalam AsyncTask.
AsyncTask Android adalah cukup serba boleh untuk menangani semua jenis nilai. Malah, dokumentasi mendefinisikan AsyncTask dengan cara ini:
android. os. AsyncTask
Takrif mempunyai tiga ruang letak jenis generik - Params, Progress, and Result. Apabila anda membuat AsyncTask anda sendiri, anda "mengisi kekosongan" dengan menyatakan jenis sebenar sebagai ganti Params, Kemajuan, dan Keputusan.
Menghantar tweet baru
Untuk menambah tweet bagi pihak pengguna, anda mengambil objek Twitter (contoh yang anda buat dengan kilang getInstance ()), dan anda panggil contoh kaedahStatus terkini. Anda tidak mahu permintaan rangkaian ini mengganggu aliran aktiviti utama anda, jadi anda meletakkan permintaan di dalam AsyncTask. Nama tugas ialah MyAsyncTaskTweet. Tiga jenis generik tugas adalah seperti berikut: String, Void, dan String:
kelas awam MyAsyncTaskTweet memanjangkan AsyncTask << String , Void , String >> { tweet 140 aksara. Kod
-
laksanakan (editTextTweet. GetText (). ToString ())
merebut rentetan aksara dari salah satu medan teks aktiviti dan melewati rentetan ke MyAsyncTaskTweet. Di dalam MyAsyncTaskTweet, kaedah doInBackground memanggil bahawa rentetan tweet [0] dan menggunakan tweet itu [0] rentetan untuk mengemas kini status pengguna.
Parameter untuk kaedah updateStatus adalah elemen tatasusunan. Itu kerana, dalam header kaedah doInBackground, tweet adalah parameter varargs. Perkataan varargs bermaksud "nombor pembolehubah pembolehubah. "Anda boleh lulus seberapa banyak nilai untuk doInBackground yang anda mahu. Di dalam badan kaedah, anda merawat tweet seolah-olah ia adalah susunan biasa. Nilai tweet pertama ialah tweet [0]. Sekiranya terdapat nilai tweet kedua, ia akan menjadi tweet [1], dan sebagainya.
Jenis kedua (Kekosongan) bermaksud nilai (atau nilai) yang menandakan kemajuan thread latar belakang dalam menyelesaikan tugasnya.
Oleh kerana tidak ada penunjuk kemajuan, nama jenis kedua adalah Tidak sah.
-
Di Jawa, kelas Void adalah kelas bungkus untuk nilai kekosongan. Letakkan itu di dalam lubang hitam anda tanpa apa-apa!
Jenis ketiga (String) bermaksud frasa seperti
Kejayaan!
-
atau Gagal tweet . Kaedah doInBackground menjumpai rentetan yang berkaitan dengan rentetan R.. kejayaan, rentetan R.. twitter_failure, atau rentetan R.. general_failure dan mengembalikan rentetan ini sebagai hasilnya. Kemudian kaedah onPostExecute memaparkan rentetan ini dalam bidang editTextTweet skrin. Imej ini meringkaskan cara nama jenis generik mempengaruhi jenis kaedah.
Penggunaan jenis dalam MyAsyncTaskTweet.
Imej di bawah merangkum bagaimana nilai bergerak dari satu tempat ke tempat lain di MyAsyncTaskTweet.
Mendapatkan garis masa pengguna
Di MyAsyncTaskTweet, parameter yang diluluskan ke doInBackground dianggap sebagai tweet. Tetapi dalam MyAsyncTaskTimeline, parameter yang diluluskan ke doInBackground adalah nama pengguna. Kod ini meluluskan nama pengguna ini kepada kaedah getUserTimeline.
Di MyAsyncTaskTweet, nilai yang dikembalikan dari doInBackground adalah mesej kejayaan atau kegagalan. Tetapi dalam MyAsyncTaskTimeline, nilai yang kembali dari doInBackground adalah rentetan penuh tweet (garis masa).
-
Kod untuk mengambil garis masa pengguna kelihatan seperti ini:
-
Senarai status = null; statuses = twitter. getUserTimeline (username [0]);
Seorang rakan bernama Yusuke Yamamoto mengembangkan Twitter4J (atau sekurang-kurangnya, Yusuke Yamamoto adalah pemimpin projek Twitter4J), dan pada satu ketika, Encik Yamamoto memutuskan bahawa kaedah getUserTimeline mengembalikan koleksi twitter4J. Objek status. (Setiap twitter4J, contohnya mengandungi satu tweet.) Jadi, untuk menghormati kontrak yang ditetapkan dengan memanggil kaedah getUserTimeline, kod mengisytiharkan status untuk menjadi koleksi twitter4J. Objek status.
Beberapa baris kemudian dalam kod, yang dipertingkatkan untuk langkah-langkah pernyataan melalui pengumpulan nilai status dan memasukkan teks setiap nilai ke rentetan hasil yang besar. Gelung itu menambah "n" (watak barisan ke-baris Java) selepas setiap tweet untuk ukuran yang baik. Dalam kaedah onPostExecute, kod tersebut memaparkan rentetan hasil besar dalam medan teksViewTimeline skrin.
Dalam kaedah doInBackground kedua, nama twitter4j yang lengkap. Status digunakan. Ini dilakukan untuk membezakan twitter4J. Kelas status dari AsyncTask Android sendiri. Kelas status (kelas dalaman kelas AsyncTask).
AsyncTask boleh agak rumit. Tetapi apabila anda membandingkan AsyncTask Android dengan alternatif threading diri, idea AsyncTask tidak sama sekali buruk. Sebenarnya, apabila anda mendapat sedikit latihan dan membuat beberapa kelas AsyncTask anda sendiri, anda sudah biasa memikirkannya. Seluruh perniagaan mula berasa agak semula jadi.
