Apakah ini praktik yang baik untuk memuat ulang Activity
di Android ?
Apa cara terbaik untuk melakukannya? this.finish
lalu this.startActivity
dengan aktivitasnya Intent
?
Apakah ini praktik yang baik untuk memuat ulang Activity
di Android ?
Apa cara terbaik untuk melakukannya? this.finish
lalu this.startActivity
dengan aktivitasnya Intent
?
Jawaban:
Anda cukup menggunakan
finish();
startActivity(getIntent());
untuk menyegarkan Activity
dari dalam dirinya sendiri.
bagi mereka yang tidak ingin melihat kedipan itu setelah ulang metode () cukup gunakan
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
Inilah yang saya lakukan untuk memuat ulang aktivitas setelah mengubah kembali dari perubahan preferensi.
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
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.
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
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();
Ini dapat dilakukan dengan menulis ini saja
recreate();
recreate()
adalah solusi bagi saya - "memulai kembali" aktivitas tidak berhasil bagi saya, karena saya memulai aktivitas menggunakan "StartActivityForResult" dan itu merusak perilaku.
cukup gunakan
this.recreate();
ini akan memicu metode onCreate dalam aktivitas
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.
// Refresh main activity upon close of dialog box
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish(); //
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.
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:
Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);
startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);
masalahnya adalah setiap kali Anda selesai () dari activityIWishToRun Anda kembali ke aktivitas hidup Anda
Memuat ulang seluruh aktivitas Anda mungkin merupakan tugas berat. Masukkan saja bagian kode yang harus di-refresh di ( kotlin ):
override fun onResume() {
super.onResume()
//here...
}
Jawa:
@Override
public void onResume(){
super.onResume();
//here...
}
Dan panggil " onResume () " kapan saja diperlukan.
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.
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.
saya memiliki masalah yang sama
import android.support.v4.content.IntentCompat;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
kode ini berfungsi untuk saya. Android api 17
Dalam suatu aktivitas Anda dapat menelepon recreate()
untuk "menciptakan kembali" aktivitas (API 11+)
Saya memiliki pendekatan lain seperti: mengatur launchMode
aktivitas saya ke singleTop
dan tanpa menelepon finish()
, hanya startActivity(getIntent())
akan melakukan pekerjaan. Hanya perlu peduli dengan data baru baik di onCreate()
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.
Setelah masuk saya punya masalah yang sama jadi saya gunakan
@Override
protected void onRestart() {
this.recreate();
super.onRestart();
}
Saya menggunakan ini dan berfungsi dengan baik tanpa
finish()
startActivity(getIntent());
bagi saya itu berfungsi itu tidak menciptakan Intents lain dan sama Intents data baru dimuat.
overridePendingTransition(0, 0);
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);