Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Memulai dengan RxJava 2 untuk Android

by
Difficulty:BeginnerLength:LongLanguages:

Malay (Melayu) translation by Rana Salsabiela (you can also view the original English article)

Jika anda seorang pengembang Android, anda mungkin pernah mendengar hal baik tentang RxJava, sebuah open source pelaksanaan yang populer dari perpustakaan ReactiveX yang membawa program reaktif ke Java Virtual Machine (JVM).

RxJava direka untuk menghilangkan rasa sakit akibat kerja dengan data asinkron - walaupun seperti yang akan anda lihat, definisi "data" RxJava cukup luas. Karena RxJava itu adalah perpustakaan yang kompatibel dengan JVM, Anda dapat menggunakannya di berbagai platform, namun dalam rangkaian ini saya akan menunjukkan cara menggunakan RxJava 2 untuk pengembangan Android.

Pada akhir seri ini anda akan menguasai semua hal penting RxJava 2 sehingga Anda dapat mulai membuat aplikasi yang sangat reaktif yang dapat memproses berbagai sinkron dan asinkron data-semuanya yang menggunakan kode yang lebih ringkas dan mudah diatur daripada biasanya mampu mencapainya dengan Java saja.

Selain memberikan pendahuluan untuk pendatang baru RxJava, jika anda adalah veteran RxJava 1 yang ingin membuat lompatan ke RxJava 2, maka rangkaian ini akan membantu membuat transisi ini semulus mungkin. Sementara meng-upgrade ke versi terbaru dari sebuah perpustakaan mungkin tidak terdengar seperti masalah besar, RxJava 2 bukanlah ciri khas anda-itu adalah RxJava ulang yang lengkap. Dengan begitu banyak perubahan, anda mudah menjadi bingung, jadi meluangkan waktu untuk membiasakan diri dengan RxJava 2 dari perspektif pemula dapat menghemat banyak waktu dan frustrasi dalam jangka panjang.

Dalam posting pertama ini, saya akan meliput apa itu RxJava dan manfaat utama yang ia tawarkan untuk Android pengembang. Kita juga akan melihat secara mendalam komponen teras dari pelbagai projek RxJava: Observers , Observables, dan langganan. Pada akhir tutorial ini, anda akan membuat aplikasi bergaya "Hello World" sederhana yang mencakup semua komponen inti ini.

Blok bangunan utama RxJava lain adalah operator, sehingga pada bagian kedua saya akan mengeksplorasi berbagai cara untuk menggunakan operator untuk mengubah, menggabungkan, memfilter dan memanipulasi aplikasi data Anda.

Dalam akhir tahun ini, kami akan bergerak melepaui perpustakaan inti RxJava dan melihat-lihat RxAndroid, keseluruhan perpustakaan yang dikemas dengan semua jenis khusus android yang anda perlukan untuk membuka reaktif penuh program reaktif untuk Android.

Kita akan membahasa banyak perkara, jadi mari kita mulakan dengan hal penting:

Apa itu RxJava?

RxJava adalah perpustakaan yang membolehkan anda membuat aplikasi dalam gaya pemrograman reaktif. Pada dasarnya, pemrograman reaktif menyediakan cara pemrosesan dan reaksi yang bersih dan efisien terhadap data arus secara real-time, termasuk data dengan nilai dinamis.

Aliran data ini tidak perlu mengambil bentuk data jenis tradisional, karena RxJava cukup banyak memperlakukan semuanya sebagai data arus - mulai dari variabel hingga properti, cache, dan bahkan acara memasukkan pengguna seperti klik dan gesekan.

Data yang dipancarkan oleh setiap aliran boleh berupa nilai, kesalahan, atau tanda "lengkap", walaupun anda tidak perlu mengaplikasikan dua hal terakhir. Setelah membuat data pemancar aliran, anda menggabungkannya dengan reaktif objek yang mengkonsumsi dan kemudian bertindak berdasarkan data ini, melakukan tindakan yang berbeda bergantung pada apa yang telah dipancarkan oleh arus. RxJava meliputi sejumlah operator yang berguna untuk bekerja dengan aliran , sehingga mudah untuk melakukan hal-hal seperti penyaringan, pemetaan, menunda, penghitungan, dan banyak lagi.

An Observable and an operation

Untuk membuat alur data aliran dan objek yang bereaksi terhadapnya, RxJava memperluas Observer perisian perancangan pola. Intinya, di RxJava, anda mempunyai Observable objek yang memancarkan data aliran dan kemudian berhenti, dan Observer objek yang berlanggan menjadi Observable Observable. Observer menerima pemberitahuan setiap kali mereka menugaskan Melengkapi nilai, observable kesalahan, atau sinyal yang telah lengkap.

Jadi pada tingkat yang sangat tinggi, RxJava adalah tentang:

  • Observable .
  • Memberikan beberapa data yang Observable untuk dipancarkan.
  • Membuat Observer .
  • Menetapkan Obrserve menjadi Boleh Observable .
  • Memberi tugas Observer untuk melakukan setiap kali menerima emisi dari Observable yang ditugaskan.

Mengapa RxJava?

Belajar teknologi baru memerlukan masa dan usaha, dan kerana data berorientasi perpustakaan, RxJava tidak selalu menjadi API yang paling mudah diatasi.

Untuk membantu anda memutuskan apakah belajar RxJava layak untuk pelaburan awal, mari jelaj beberapa utama manfaat untuk menambah perpustakaan RxJava ke dalam Android project anda.

Lebih ringkas, kod yang dapat dibaca

Kod yang rumit, verbose dan sukar dibaca adalah selalu kabar buruk. Kod Messy lebih rentan terhadap bug dan inefisiensi lain, dan jika ada kesalahan yang terjadi makaanda akan memiliki waktu yang jauh lebih sulit untuk mencatat sumber kesalahan ini jika kode Anda berantakan.

Bahkan jika projek anda tidak dibina tanpa sebarang kesalahan, rumit kod yang dapat kembali menghantui anda-biasanya ketika anda memutuskan untuk mengeluarkan update ke aplikasi anda beberapa bulan ke bawah, boot project anda, dan segera dihadapkan dengan dinding. kusut, membingungkan kod!

RxJava menyederhanakan kod yang diperlukan untuk menangani data dan peristiwa dengan membolehkan anda mendeskripsikan apa yang ingin anda capai, daripada menulis arahan arahan untuk aplikasi anda. RxJava juga menyediakan standard kerja alur yang dapat anda gunakan untuk mengatasi semua data dan peristiwa di seluruh aplikasi Anda-buatlah Boleh Observable , buat Observer , tentukan pemerhatian kepada pengamat, rinsen dan ulangi. Pendekatan formulaik ini membuat kod yang mudah dibaca dan mudah dibaca manusia.

Multithreading Made Easy

Aplikasi android moden harus dapat berbilang tugas. Paling tidak, pengguna anda akan berharap dapat terus berinteraksi dengan aplikasi UI ketika aplikasi anda melakukan beberapa pekerjaan di latar belakang, seperti mengelola jaringan sambungan, mendownload file, atau bermain musik. Masalahnya adalah bahawa Android adalah single-threaded secara lalai, jadi jika aplikasi Anda pernah berhasil multi-task maka Anda perlu membuat beberapa tambahan thread.

Di luar kotak, android memang menyediakan beberapa cara untuk membuat tambahan thread, seperti layanan dan IntentServices , tetapi tidak satu pun dari solusi ini sangat mudah diterapkan, dan mereka dapat dengan cepat menghasilkan kompleks, kode verbose yang rentan terhadap kesalahan.

RxJava bertujuan untuk menghilangkan rasa sakit dari pembuatan aplikasi multi-threaded Android, dengan menyediakan penjadwal dan khusus operator. Dia memberikan anda cara mudah untuk menentukan thread dimana pekerjaan harus dilakukan dan thread di mana hasil dari pekerjaan ini harus diposting. RxJava 2.0 merangkumi beberapa penjadwal secara lalai, termasuk Schedulers.newThread , yang sangatberguna kerana menghasilkan baru thread.

Untuk mengubah thread tempat di mana pekerjaan dilakukan, anda hanya perlu mengubah tempat pemerhati berlangganan ke observable, dengan menggunakan operator subscribeOn . Sebagai contoh, di sini kita membuat thread baru dan menentukan bahawa pekerjaan harus dilakukan pada thread baru ini:

Masalah lama lain dengan multithreading di Android adalah anda hanya dapat memperbarui aplikasi UI anda dari main thread. Biasanya, bila pun anda perlu mengeposkan hasil beberapa karya latar ke UI aplikasi anda, anda harus membuat Handler yang berdedikas.

Sekali lagi, RxJava mempunyai penyelesaian yang jauh lebih mudah. Anda boleh menggunakan operator observeOn untuk menentukan bahawa Observable harus menghantar notifikasi menggunakan beberapa penjadwal, yang pada dasarnya membolehkan Anda mengirimkan data Observable Anda ke pilihan pilihan Anda, termasuk utama UI thread.

Ini bermakna bahawa dengan hanya dua baris kod, anda dapat membuat thread baru dan mengirim hasil kerja yang dilakukan di thread ini ke thread utama Android:

Baiklah, secara teknikal kita curang sedikit di sini, kerana AndroidSchedulers.mainThread hanya tersedia sebagai sebahagian dari perpustakaan RxAndroid, yang tidak akan kita lihat hingga bahagian tiga. Namun, contoh ini memang memberi Anda kekuatan RxJava dan RxAndroid untuk menyederhanakan kawasan pengembangan Android yang dikenal terlalu rumit.

Peningkatan Fleksibilitas

Observables memancarkan data mereka dengan cara yang sepenuhnya menyembunyikan data cara dibuat. Oleh kerana pemerhati anda tidak dapat melihat bagaimana data dibuat, Anda bebas untuk menerapkannya Observables anda dengan cara apa pun yang anda inginkan.

Setelah anda menerapkan Observables anda, RxJava menyediakan operator dalam jumlah besar yang dapat Anda gunakan untuk menyaring, menggabungkan dan mengubah data yang sedang dipancarkan oleh Observables. Anda bahkan boleh menjerumuskan lebih banyak dan lebih banyak operator serentak sehingga Anda menciptakan aliran data yang tepat diperlukan aplikasi Anda.

Sebagai contoh, anda boleh menggabungkan data dari beberapa aliran, mengfilter aliran yang baru disatukan, kemudian menggunakan data yang dihasilkan sebagai input untuk data selanjutnya. Dan ingat bahawa di RxJava, hampir semua hal itu diperlakukan sebagai data aliran, jadi anda dapat menerapkan operator ini ke non-tradisional "data", seperti peristiwa klik.

Membuat Aplikasi yang Lebih Responsif

Gone adalah hari-hari ketika aplikasi dapat lolos dengan memuat konten laman dan kemudian menunggu pengguna untuk mengetuk Next button. Saat ini, aplikasi seluler khas anda harus dapat bereaksi terhadap berbagai peristiwa dan data yang terus berkembang, idealnya secara real time. Sebagai contoh, aplikasi jejaring sosial khas anda harus terus mendengarkan keinginan masuk, komen, dan pertemanan permintaan, sambil menguruskan rangkaian sambungan di latar belakang dan segera menjawab setiap saat pengguna mengetuk atau menggesek layar.

Perpustakaan RxJava dirancang untuk dapat mengelola berbagai data dan peristiwa secara bersamaan dan secara real time, menjadikannya alat yang ampuh untuk menciptakan jenis aplikasi yang sangat responsif yang diharapkan oleh pengguna ponsel modern.

Menambah RxJava ke Android Studio

Jika anda telah memutuskan bahawa RxJava memang mempunyai sesuatu untuk ditawarkan pada praktik pengembangan Android anda, maka langkah pertama untuk menjadi master RxJava adalah menambah perpustakaan ke proyek anda.

Buat projek Android Studio baru dengan pengaturan pilihan Anda, dan kemudian buka build.gradle tingkat modul file dan tambahkan versi terbaru dari io.reactivex.rxjava2:rxjava sebagai ketergantungan.

Pada saat penulisan, RxJava 2.0.5 merupakan peluncuran terbaru, jadi file build.gradle saya terlihat seperti ini:

Apabila diminta, klik Sinkronkan sekarang .

Selanjutnya, buka fail MainActivity anda dan tambah impor yang anda perlukan untuk mulai bekerja dengan fitur inti RxJava:

Jika anda bermigrasi dari RxJava 1, maka impor ini tidak mungkin bukan yang anda harapkan, karena RxJava 1 menggunakan nama paket yang sama sekali berbeda ( rx tepatnya).

Namun, ini bukan perubahan nama yang sewenang-wenang: nama paket yang berbeda memberikan pilihan untuk menggunakan RxJava 1 dan RxJava 2 berdampingan dalam proyek yang sama. Jika anda setengah jalan melalui projek yang menggunakan RxJava 1, anda boleh menambah perpustakaan RxJava 2 dan mulai menggunakan fitur 2 yang diperbarui dengan segera, tanpa melanggar kode RxJava 1 anda.

Sekiranya anda memulakan perjalanan dengan RxJava versi 2, maka perlu disadari bahawa jika anda menemukan tutorial atau kode RxJava menggunakan nama paket rx , maka ini adalah kode RxJava 1 dan sepertinya tidak kompatibel dengan perpustakaan versi 2.

Blok Bangunan RxJava

Sejauh ini, kita hanya melihat RxJava pada tingkat yang sangat tinggi. Sudah waktunya untuk lebih spesifik dan melihat secara mendalam dua perkara paling penting yang akan muncul berkali-kali sepanjang masa kerja anda RxJava: Observers and Observables.

Pada akhir bahagian ini, Anda tidak akan hanya mempunyai pemahaman yang solid tentang kedua inti komponen ini, tetapi Anda akan berhasil menciptakan aplikasi yang berfungsi penuh yang terdiri dari sebuah Observable yang memancarkan data dan observer yang bereaksi terhadap emisi ini.

Observable

Iterable dengan Iterable dalam hal itu, diberi urutan, ia akan berulang melalui urutan itu dan memancarkan setiap item, walaupun Observables biasanya tidak memancarkan data sehingga Observerber langganan pada mereka.

Setiap kali Observable memancarkan item, ia memberi tahu Observer yang ditugaskan menggunakan metode onNext() . Ketika Observable telah mentransmisikan semua nilai, ia berakhir dengan memanggil:

  • onComplete : Disebut jika operasi itu berjaya.
  • onError : Disebut jika Pengecualian dilemparkan

Mari kita lihat contoh. Di sini, kita menciptakan sebuah Observable yang memancarkan angka 1 , 2 , 3 dan4 , dan kemudian berakhir.

Perhatikan bahawa dalam contoh ini saya menguraikan dengan tepat apa yang terjadi, jadi jangan biarkan jumlah kode membuat Anda pergi! Hal ini membolehkan lebih banyak kod daripada yang biasa anda gunakan untuk membuat Observables dalam RxJava projek real-life anda.

Buat Pengamat

Observers adalah objek yang anda tetapkan untuk Observable, menggunakan operator subscribe() . SaatObserver berlangganan ke Observable, itu akan bereaksi setiap kali nya Observer mengembarkan salah satu dari berikut ini:

  • onNext : onNext telah memancarkan nilai
  • onError : Satu kesalahan telah berlaku.
  • onComplete : Observable telah selesai memancarkan semua nilainya.

Mari buat seorang Observer yang melanggan ke Observable 1, 2, 3, 4 kita. Untuk membantu menjaga hal-hal sederhana, Observer akan bereaksi terhadap onNext , onError dan onComplete dengan mencetak mesej ke Android Studio Logcat Monitor :

Buka Monitor Logcat Android Studio dengan memilih tab Monitor Android dari bawah bawah Android Studio (tempat kursor di posisi di layar bawah) dan kemudian pilih tab Logcat .

Reactive Programming Logcat

Untuk menguji kod ini, lampirkan peranti fisik Android anda ke mesin anda atau jalankan proyek anda di AVD yang kompatibel. Begitu aplikasi anda muncul di skrin, anda harus melihat data yang dipancarkan oleh Anda dapat dilihat.

Reactive Programming Observer Observable

Mencipta dapat dipatuhi dengan Kurang Kod

Walaupun projek kami memancarkan data dengan sukses, kod yang kami gunakan tidak begitu ringkas - terutama kode yang kami gunakan untuk membuat kami dapat Observable .

Syukurlah, RxJava menyediakan beberapa kaedah kenyamanan yang membolehkan anda untuk membuat Observable menggunakan Less code.

1. Observable.just ()

Anda boleh menggunakan operator .just() untuk mengubah objek menjadi Observable . Hasil Observable kemudian akan memancarkan objek asli dan selesai.

Sebagai contoh, di sini kita menciptakan sebuah Observable yang akan memancarkan satu senar ke semua Observers :

2. Observable.from()

Operator .from .from() membolehkan anda mengubah kumpulan objek menjadi aliran yang dapat diperhatikan. Anda boleh Iterable menjadi Iterable menggunakan Iterable , Iterable menjadi Iterablemenggunakan Iterable , dan Iterable menjadi Iterable menggunakan Iterable .

3. Observable.range()

Anda boleh menggunakan operator .range() untuk memancarkan pelbagai bilangan bulat berurutan. Inti pertama yang anda berikan adalah nilai awal, dan yang kedua adalah jumlah integer yang ingin anda pancarkan. Sebagai contoh:

4. Observable.interval()

Pengendali ini mewujudkan sebuah Observable yang memancarkan urutan tak berhingga bilangan bulat naik, dengan setiap emisi dipisahkan oleh selang waktu yang dipilih oleh Anda. Sebagai contoh:

5. Observable.empty()

Pengendali empty() mencipta sebuah Observable yang tidak memancarkan item tetapi berakhir dengan normal, yang boleh berguna jika anda perlu membuat Observable untuk tujuan pengujian.

Kesimpulan

Pada artikel ini, kita membahas blok bangunan dasar RxJava.

Pada titik ini, anda tahu cara membuat dan bekerja dengan Observers dan Observables, dan cara membuat langganan sehingga Observables anda bisa mulai memancarkan data. Kami juga sempat melihat beberapa operator yang membolehkan anda membuat pelbagai Observables yang berbeda menggunakan Less code.

Namun, operator bukan hanya cara praktis untuk mengurangi jumlah kode yang perlu Anda tulis! MembuatObserver dan Observable cukup sederhana, tetapi operator adalah tempat anda benar-benar mulai melihat apa yang mungkin dilakukan dengan RxJava.

adi di posting seterusnya, kami akan menjajaki beberapa operator RxJava yang paling kuat, termasuk operator yang akhirnya dapat membuat multithreading di android menjadi pengalaman bebas rasa sakit.Nantikan untuk belajar kekuatan nyata perpustakaan RxJava.

Sementara itu, lihat beberapa tulisan dan kursus kami yang lain tentang pengembangan Android di sini, di Envato Tuts +!

Aliran data rajah yang dapat dilihat berasal dari dokumentasi ReactiveX, dan dilisensikan di bawah Lisensi Creative Commons Atribution 3.0.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.