Bir kullanıcı uygulamanızda gezinirken, dışına çıktığında
ya tekrar uygulamanıza geri döndiğinde, Activity farklı
durumlar arasında geçişler yapar.Örneğin; aktivity ilk defa çalıştığında, sistemin
ön plana geliyor ve kullanıcıya odaklanıyor. Bu işlem sırasında,
Android system kullanıcı arayüzü ve diğer bileşenler ayarlanmış activiy
üzerinde bir seri lifecycle metodları çağırır.Eğer kullanıcı başka bir activity
ve ya başka bir uygulama başlatırsa, sistem arka taraftan activty üzerinde başka
bir lifecycle metodlarını çağırır.
Activity’lerinde kullanıcı ayrıldığında ve
tekrar giriş yaptığında lifecycle
callback metodları içerisinde activity’lerin nasıl davranması gerektiğini
tanımlayabiliriz.Örneğin, Eğer bir video oynactıcı yapıyorsanız, kullanıcı başka bir uygulumaya
geçtiğinde bekletmeniz ve son vermeniz gerekebilir. Kullanıcı tekrardan
programınıza döndüğünde, tekrardan ağa bağlanabilir ve kaldığı yerden video
izlemesine izin verebilirsiniz.Bu sınıf bize önemli bir lifcycle motdunu
açıklıyor ki her activtiy alır ve kullanıcının isteklerine göre çalıştırır ve
ihtiyaç duyulmadığında sistem
kaynaklarını ziyan etmez.
Bir
Activity’i Başlatmak
Lifecycle
Callback ‘i Anlama
Bir
Activity’i Başlatmak
Bir main() metodu ile çalışan diğer programların aksine Andorid
sistemi, lifecycle’da özel callback
metodlarını çağırarak Activity instance başlatır. Callback dizisi metodlarını çağırır
ki bu dizede, bir akitiviteyi başlatır ve başka bir aktiviteyi alaşağı edilir.
Bu ders en önemli yaşam döngüsü yöntemleri genel bir bakış sağlar ve
size aktivite yeni bir örneğini oluşturur ve lifecycle Callback’ın nasıl
işleneceğini gösterir.
Lifecycle
Callback ‘i Anlama
Android sistemi yeni bir activity
instance başlattığında, her callback metodu aşağıdaki resimdeki gibi hareket
eder.En üsteki piramid ön planda çalışan activity’dir ve kullanıcılar bununla
etkileşime girer.
Muhtemelen lifecycle metotlarını
eklememiz gerekmeyecek. Lifecycle metotlarını uygulamak, uygulamamızın
karşılaştığı durumlar çok fazla bir hareket noktası sağlar.
Örneğin:
· -Uygulamayı kullanırken başka
bir uygulamaya geçildiğinde ve ya telefon çaldığında programı olağan dışı
sonlandırmasını engelleme
· -Kullanıcı uygulamayı aktif
olarak kullanmıyorsa, sistem kaynaklarını kullanmayı bırakma
· -Kullanıcı uygulamadan
ayrıldığında ve bir zaman sonra tekrar geri döndüğünde, kullanıcının yapmış
olduğu işlemi kaybetme
·
Ekran Yatay ve dikey
doğrultu arasında döndüğünde , programı kapatma ve kullanıcının yapmış olduğu
işlemleri kaybetme
Resumed
Bu durumda, etkinlik ön planda olduğu ve kullanıcı onunla etkileşime
girebilir.
Paused
Bu durumda, etkinliği kısmen yarı saydamdır veya tüm ekranı kaplamaz. Başka
bir aktivite diğer aktivite ile örtülüdür. Duraklatılmış etkinlik kullanıcı
girişi almaz ve herhangi bir kod yürütmesine olamaz.
Stopped
Bu durumda, etkinlik tamamen gizli ve kullanıcıya görünür değildir; arka
planda olduğu düşünülmektedir. durdurulmuş olsa da, bu tür üye değişkenleri
olarak faaliyet örneği ve tüm durum bilgisi korunur, ancak herhangi bir kod
yürütmesine olamaz.
Uygulamanız için Başlama Activity Belirleme
Kullanıcı ana ekrandan
uygulamamızı seçtiğinde, sistem uygulamanızdaki Activity
için onCreate()
metodu çalıştırır. Bu uygulamanızın kullanıcı arayüzüne ana giriş noktası
olarak hizmet veren bir aktivitedir.
Android
manifest dosyasında başlangıç aktiviteyi
tanımlayabilirsiniz.Örneğin AndroidManifest.xml
aşağıdaki gibidir.
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Yeni bir Instance Oluşturma
Çok fazla
uygulamada kullanıcılar farklı eylemleri gerçekleştirmek için izin
vermektedir.Kullanıcıların durumlarına göre ana aktivity’de değişiklikler yapılmaktadır.Bunun için Activity
de, onCreate() metodu kullanılmaktadır.Örneğin ana activiy
aşağıdaki şekilde değiştiriyoruz.
package com.example.mypc.myfirstapp;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
TextView mTextView; // Member variable for text view in the layout
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the user interface layout for this Activity
// The layout file is defined in the project res/layout/main_activity.xml file
setContentView(R.layout.activity_main);
// Initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.edit_message);
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
// does not behave as a button
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);
}
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
AndroidManifest.xml
aşağıdaki gibidir.package com.example.mypc.myfirstapp; import android.app.ActionBar; import android.content.Intent; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; TextView mTextView; // Member variable for text view in the layout @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the user interface layout for this Activity // The layout file is defined in the project res/layout/main_activity.xml file setContentView(R.layout.activity_main); // Initialize member TextView so we can manipulate it later mTextView = (TextView) findViewById(R.id.edit_message); // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // For the main activity, make sure the app icon in the action bar // does not behave as a button ActionBar actionBar = getActionBar(); actionBar.setHomeButtonEnabled(false); } } /** Called when the user clicks the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
Activitiy kaldırma
onCreate()
metodu ile lifcycle başlar, son çağrı ise onDestroy()
metodudur.
Hiç yorum yok:
Yorum Gönder