Bir Activity Duraklatmak ve Devam Ettirmek
Normal
uygulama kullanımı sırasında, ekranda aktif olan activity diğer görsel
bileşenler tarafından arka plana itilir ve activty’i pause konumuna geçirir.
Örneğin, yarı-transparan bir activity (dialog kutuları gibi) açıldığında, bir
önceki activity pause edilir. Diğer activity ekranda kaldığı sürece asıl ekran
dikkat dışıdır ve paused (duraklatılmış) konumda bekler.
Activity
tamamen görünmez olur ve arka plana geçirilirse, Stopped(durdurulmuş) konuma
geçer. (Bir sonraki konu bununla alakalı olacak)
Activity’niz
paused duruma geçtiğinde, sistem uygulamanızın sürdürdüğü işlemleri durdurmak
için veya kullanıcının son işlemlerini kaydetmek için kullanabileceğiniz activity’niz
içinde kodlanmış olan onPause() metodunu
çağırır. Eğer kullanıcı paused durumdan activity’e geri dönüş yaparsa sistem
uygulamanıza devam etmek için onResume() metodunu
çağırır.
NOT:
Activity’niz onPause() metodunu çağırdığı anda, bu
kullanıcını bir süre sonra uygulamanıza veya activity’nize geri döneceği
anlamına gelir. Ancak genelde böyle olmaz ve kullanıcı activity’den tamamen
ayrılır.
Activity’niz yarı transparan bir view tarafından arka plana
itildiğinde, sistem onPause() metodunu
çağırır ve activity paused(1) durumda bekler. Eğer kullanıcı activity’niz
paused konumundayken geri gelirse, sistem onResume()
(2) metodunu çağırır.
Activitynizi Duraklatmak
Sistem onPause() metodunu çağırdığında bunun anlamı
activity’ni kısmen görünür durumdadır. Ancak durum buna işaret etse de genel
olarak kullanıcı activity’den ayrılmıştır ve yakında activity’niz Stopped
duruma geçecek demektir. onPause() metodunu
kullanmanız gereken durumlar;
·
CPU tüketebilecek, Animasyon veya diğer
süregelen işlemleri duraklatmak için,
·
Kaydedilmeyen değişiklikleri sormak için ( tabii
ki kullanıcının bu şekilde bir uyarı almasını gerektiren bir uygulama
geliştiriyorsanız. Örneğin bir e-mail uygulaması…)
·
Broadcast Receivers(Yayın algılayıcılar), sensor
işlemleri veya stopped durumda cihazın pil ömrünü azaltacak diğer kaynakların
kullanıldığı uygulamalarda..
Örneğin, uygulamanız Kamera kullanıyorsa onPause() metodu kamerayı serbest bırakmak için
ideal bir yerdir.
ÖRNEK:
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
public void onPause() {
super.onPause(); // Always call the superclass method first
// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
Genellikle, kullanıcı değişikliklerini geçici depolama
alanlarına kaydetmek için onPause() metodunu
kullanmamalısınız. Bu işlemler için bu
metodu kullanmanız gereken tek durum e-mail vb uygulamalarda olduğu gibi
otomatik-kaydetme özelliği sağlamak istediğinizi zamanlardır. Ancak, bu işlemi
yaparken CPU’nun yoğun kullanıldığı bir onPause()metodu
kodlamaktan kaçınmalısınız.(DB yazma işlemleri tanımlamak gibi...) Çünkü bu
işlem sırasında sistem kaynakları, geçiş yapılan diğer activity için yeteri
kadar alan sahip olmayacağından kullanıcı deneyimini olumsuz etkileyecek bir
işlem tanımlamış olursunuz.(yüksek sistem kaynağı kullanımına yol açabilecek
işlemleriniz için onStop() metodunu
kullanmalısınız.
NOT:
Activity’niz paused durumundayken, Activity örneği bellekte
bir yer tutar ve activity e devam edileceği bu örnek geri çağırılır. Bu durumda
activity’nizin bileşenlerini yeniden hazırlamanıza gerek yoktur.
Activitynizi Devam Ettirmek
Kullanıcı
activity’nizi durdurulmuş durumdan devam ettireceği zaman, sistem onResume() metodunu çağırır.
Dikkat
etmeniz gereken husus, activity’niz ilk defa oluşturulurken ve her ön plana
çıkarılma durumunda bu metot sistem tarafından çağırılır. Eğer onPause() metoduyla durdurduğunuz işlemler varsa
veya activity her Resumed duruma geçerken hazırlamanız gerek bileşenler var ise
onResume() metodunu uygulamalı ve bu
hazırlık kodlarını burada tanımlamanız gerekir.(durdurulan animasyonu tekrar
başlatmak veya kullanıcını en son kaldığı konumları tekrar yüklemek için…)
Aşağıdaki
örnekte daha önce bahsedilen onPause()
metodunun devamı olacak şekilde tanımlanmış bir onResume()
metodu yer almaktadır.
ÖRNEK:
@Override public void onResume() { super.onResume(); // Always call the superclass method first // Get the Camera instance as the activity achieves full user focus if (mCamera == null) { initializeCamera(); // Local method to handle camera init } }