Apakah ini praktik yang baik untuk memuat ulang Activity
di Android ?
Apa cara terbaik untuk melakukannya? this.finish
lalu this.startActivity
dengan aktivitasnya Intent
?
android
android-activity
hpique
sumber
sumber
Jawaban:
Anda cukup menggunakan
untuk menyegarkan
Activity
dari dalam dirinya sendiri.sumber
bagi mereka yang tidak ingin melihat kedipan itu setelah ulang metode () cukup gunakan
sumber
Inilah yang saya lakukan untuk memuat ulang aktivitas setelah mengubah kembali dari perubahan preferensi.
Ini pada dasarnya menyebabkan aktivitas untuk menggambar ulang sendiri.
Diperbarui: Cara yang lebih baik untuk melakukan ini adalah dengan memanggil
recreate()
metode. Ini akan menyebabkan aktivitas diciptakan kembali.sumber
Saya melihat jawaban sebelumnya yang telah diberikan untuk memuat ulang aktivitas menggunakan Intent. Itu akan bekerja tetapi Anda juga bisa melakukan hal yang sama menggunakan metode reinate () yang diberikan di kelas Activity
Alih-alih menulis ini
// Perbarui aktivitas utama setelah menutup kotak dialog
Ini dapat dilakukan dengan menulis ini saja
sumber
recreate()
adalah solusi bagi saya - "memulai kembali" aktivitas tidak berhasil bagi saya, karena saya memulai aktivitas menggunakan "StartActivityForResult" dan itu merusak perilaku.cukup gunakan
ini akan memicu metode onCreate dalam aktivitas
sumber
Saya perlu memperbarui daftar pesan di salah satu aplikasi saya dengan tergesa-gesa, jadi saya hanya melakukan penyegaran aktivitas UI utama saya sebelum saya menutup dialog tempat saya masuk. Saya yakin ada cara yang lebih baik untuk mencapai ini juga.
sumber
Android mencakup sistem manajemen proses yang menangani pembuatan dan penghancuran aktivitas yang sebagian besar meniadakan manfaat yang Anda lihat dari memulai kembali aktivitas secara manual. Anda dapat melihat informasi lebih lanjut tentang itu di Fundamentals Aplikasi
Apa yang merupakan praktik yang baik adalah memastikan bahwa metode onPause dan onStop Anda melepaskan sumber daya apa pun yang tidak perlu Anda pertahankan dan gunakan onLowMemory untuk mengurangi kebutuhan aktivitas Anda seminimal mungkin.
sumber
Mulailah dengan maksud yang sama
activity
dan tutupactivity
.sumber
dalam beberapa kasus itu adalah praktik terbaik di lain itu bukan ide yang baik itu didorong konteks jika Anda memilih untuk melakukannya menggunakan berikut ini adalah cara terbaik untuk menularkan dari kegiatan ke putranya:
masalahnya adalah setiap kali Anda selesai () dari activityIWishToRun Anda kembali ke aktivitas hidup Anda
sumber
Memuat ulang seluruh aktivitas Anda mungkin merupakan tugas berat. Masukkan saja bagian kode yang harus di-refresh di ( kotlin ):
Jawa:
Dan panggil " onResume () " kapan saja diperlukan.
sumber
Saya tidak berpikir itu ide yang bagus ... akan lebih baik untuk menerapkan metode yang lebih bersih. Misalnya, jika aktivitas Anda memegang formulir, metode pembersih hanya bisa menghapus setiap widget dalam formulir dan menghapus semua data sementara. Saya kira itulah yang Anda inginkan: pulihkan aktivitas ke kondisi awal.
sumber
Setelah bereksperimen dengan ini untuk sementara waktu saya tidak menemukan konsekuensi yang tidak terduga dari memulai kembali suatu kegiatan. Juga, saya percaya ini sangat mirip dengan apa yang dilakukan Android secara default ketika orientasi berubah, jadi saya tidak melihat alasan untuk tidak melakukannya dalam keadaan yang sama.
sumber
saya memiliki masalah yang sama
kode ini berfungsi untuk saya. Android api 17
sumber
Dalam suatu aktivitas Anda dapat menelepon
recreate()
untuk "menciptakan kembali" aktivitas (API 11+)sumber
Saya memiliki pendekatan lain seperti: mengatur
launchMode
aktivitas saya kesingleTop
dan tanpa meneleponfinish()
, hanyastartActivity(getIntent())
akan melakukan pekerjaan. Hanya perlu peduli dengan data baru baik dionCreate()
danonNewIntent
. Dengan cara Sush, aplikasi mungkin berkedip seperti kata AMAN SINGH. Tapi pendekatan AMAN SINGH masih akan menciptakan aktivitas baru yang entah bagaimana, tidak perlu, bahkan jika dia memperbaiki masalah 'blink', saya pikir.Sudah terlambat untuk pertanyaan ini, tetapi jika seseorang mencari solusi, ini dia.
sumber
Setelah masuk saya punya masalah yang sama jadi saya gunakan
sumber
Saya menggunakan ini dan berfungsi dengan baik tanpa
finish()
sumber
bagi saya itu berfungsi itu tidak menciptakan Intents lain dan sama Intents data baru dimuat.
sumber