Bagaimana saya bisa membuat variabel global menjaga nilai tetap di sekitar siklus hidup aplikasi terlepas dari aktivitas yang berjalan.
android
global-variables
b-man
sumber
sumber
Jawaban:
Anda dapat memperluas
android.app.Application
kelas dasar dan menambahkan variabel anggota seperti:Di manifes Android Anda, Anda harus mendeklarasikan kelas yang menerapkan android.app.Application (tambahkan
android:name=".MyApplication"
atribut ke tag aplikasi yang ada):Kemudian dalam aktivitas Anda, Anda bisa mendapatkan dan mengatur variabel seperti:
sumber
Anda dapat menggunakan
Singleton Pattern
seperti ini:Dalam aplikasi Anda, Anda dapat mengakses singleton Anda dengan cara ini:
sumber
Variabel global ini berfungsi untuk proyek saya:
sumber
Anda dapat menggunakan preferensi aplikasi. Mereka dapat diakses dari aktivitas atau bagian kode apa pun selama Anda meneruskan objek Konteks, dan mereka pribadi untuk aplikasi yang menggunakannya, jadi Anda tidak perlu khawatir tentang mengekspos nilai-nilai spesifik aplikasi, kecuali jika Anda berurusan dengan dialihkan perangkat. Meski begitu, Anda bisa menggunakan skema hashing atau enkripsi untuk menyimpan nilai. Juga, preferensi ini disimpan dari aplikasi yang dijalankan ke yang berikutnya. Berikut adalah beberapa contoh kode yang dapat Anda lihat.
sumber
Ada beberapa cara berbeda untuk mencapai apa yang Anda minta.
1.) Perpanjang kelas aplikasi dan instantiate controller Anda dan objek model di sana.
Kemudian Anda dapat memanggil singleton Anda dari objek Aplikasi kustom Anda kapan saja:
2.) Anda dapat membuat controller Anda cukup membuat instance singleton itu sendiri:
Kemudian Anda bisa memanggil metode create dari Activity atau Fragment apa saja dan itu akan membuat controller baru jika belum ada, jika tidak maka akan mengembalikan controller yang sudah ada sebelumnya.
3.) Akhirnya, ada kerangka kerja apik yang dibuat di Square yang memberikan Anda injeksi ketergantungan dalam Android. Itu disebut belati . Saya tidak akan membahas cara menggunakannya di sini, tetapi sangat apik jika Anda memerlukan hal semacam itu.
Saya harap saya memberikan detail yang cukup tentang bagaimana Anda dapat melakukan apa yang Anda harapkan.
sumber
Coba Seperti Ini:
Buat kelas data bersama:
SharedData.java
Menyatakan / menginisiasi instance kelas secara global di kelas-kelas tempat Anda ingin mengatur / mendapatkan data (menggunakan kode ini sebelum
onCreate()
metode): -Setel data:
Dapatkan data:
sumber
Anda dapat membuat yang
Global Class
seperti ini:Kemudian definisikan dalam manifes:
Sekarang Anda dapat mengatur nilai ke variabel global seperti ini:
Anda bisa mendapatkan nilai-nilai seperti ini:
Silakan temukan contoh lengkap dari blog Global Variables ini
sumber
sumber
Saya memeriksa jawaban yang sama, tetapi yang diberikan di sini tidak sesuai dengan kebutuhan saya. Saya menemukan sesuatu yang, dari sudut pandang saya, adalah apa yang Anda cari. Satu-satunya titik hitam yang mungkin adalah masalah keamanan (atau mungkin tidak) karena saya tidak tahu tentang keamanan.
Saya sarankan menggunakan Antarmuka (tidak perlu menggunakan Kelas dengan konstruktor dan sebagainya ...), karena Anda hanya perlu membuat sesuatu seperti:
Kemudian Anda dapat mengakses di mana saja di dalam kelas Anda dengan menggunakan yang berikut:
sumber
Secara teknis ini tidak menjawab pertanyaan, tetapi saya akan merekomendasikan menggunakan database Room daripada variabel global. https://developer.android.com/topic/libraries/architecture/room.html Bahkan jika Anda 'hanya' perlu menyimpan variabel global dan itu bukan masalah besar dan apa yang tidak, tetapi menggunakan database Room adalah yang paling elegan , cara yang asli dan didukung dengan baik untuk menjaga nilai-nilai di sekitar siklus hidup kegiatan. Ini akan membantu mencegah banyak masalah, terutama integritas data. Saya mengerti bahwa basis data dan variabel global berbeda tetapi tolong gunakan Kamar demi pemeliharaan kode, stabilitas aplikasi dan integritas data.
sumber
Gunakan SharedPreferences untuk menyimpan dan mengambil variabel global.
sumber
Jika memungkinkan, Anda harus mendeklarasikan variabel yang Anda perlukan agar tetap hidup yang belum dihapus oleh Garbage Collector atau Unload by OS dalam file .so Untuk melakukannya, Anda harus kode dengan C / C ++ dan mengkompilasi ke file .so lib dan muat di MainActivity Anda.
sumber
static
variabel Java .sumber
Mudah!!!!
Variabel yang ingin Anda akses sebagai variabel global, Anda dapat mendeklarasikannya sebagai variabel statis. Dan sekarang, Anda dapat mengakses variabel-variabel itu dengan menggunakan
classname.variablename;
}
MyProperites.someValueIWantToKeep;
Itu dia! ;)
sumber
synchronized
statisgetInstance()
sedangkan yang lain tidak. diputuskan sesuai.