Menggunakan Kelas Aplikasi
Bergantung pada apa yang Anda lakukan dalam inisialisasi Anda, Anda dapat mempertimbangkan membuat kelas baru yang memperluas Applicationdan memindahkan kode inisialisasi Anda ke onCreatemetode yang ditimpa dalam kelas itu.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
The onCreatedi kelas aplikasi hanya disebut ketika seluruh aplikasi yang dibuat, sehingga Aktivitas restart pada orientasi atau keyboard perubahan visibilitas tidak akan memicu itu.
Adalah praktik yang baik untuk mengekspos instance kelas ini sebagai singleton dan mengekspos variabel aplikasi yang Anda inisialisasi menggunakan getter dan setter.
CATATAN: Anda harus menentukan nama kelas Aplikasi baru Anda di manifes agar dapat didaftarkan dan digunakan:
<application
android:name="com.you.yourapp.MyApplicationClass"
Bereaksi terhadap Perubahan Konfigurasi [UPDATE: ini sudah ditinggalkan sejak API 13; lihat alternatif yang direkomendasikan ]
Sebagai alternatif lebih lanjut, Anda dapat membuat aplikasi Anda mendengarkan acara yang akan menyebabkan perubahan orientasi dan visibilitas keyboard dimulai ulang - dan menanganinya dalam Kegiatan Anda.
Mulailah dengan menambahkan android:configChangessimpul ke simpul manifes Kegiatan Anda
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
atau untuk Android 3.2 (API level 13) dan yang lebih baru :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
Kemudian di dalam Activity, ganti onConfigurationChangedmetode tersebut dan panggil setContentViewuntuk memaksa tata letak GUI agar dilakukan kembali dalam orientasi baru.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}