Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Makale - Pratik - Android Programlama Ders 22: Activity Lifecycle ve iki etkileşim için durum değişikliği

Android Programlama Ders 22: Activity Lifecycle ve iki etkileşim için durum değişikliği

9 Kasım 2013 - 16:00
- Mobil, Pratik

Android programlama öğrenmeye devam ediyoruz. Bu derste iki etkileşimi kullanarak durum değişikliği göreceğiz.

Geçen derslerimizde etkileşimin çalıştığında geçen durumları ve çağrılan metodları öğrendik.  Ama etkileşimi sadece Resumed (Etkileşim ekranda görülür ve kullanıcı onunla çalışabiliyor. Bu durumu bazen Running (Çalışıyor) isimlendiriyor.) durumunda gördük. Bu derste iki etkileşimi kullanarak Stopped (Durmuş etkileşim. Odaklı değil, bellekte duruyor ve kullanıcı onunla bağlantılı değil.) durumunu göreceğiz.

Yeni bir proje oluşturalım:

Project name: P0022_TwoActivityState
Build Target: Android 4.2
Application name: TwoActivityState
Package name: tr.androidApp.TwoActivityState
Create Activity: MainActivity

Main.xml aşağıdaki kodla dolduralım:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”>
</TextView>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Go to Activity Two”
android:id=”@+id/btnActTwo”>
</Button>
</LinearLayout>

“Go to Activity Two” buton ikinci etkileşimi çağıracak.

MainActivity.java’yı açalım ve onRestart’la beraber tüm metodları içeriye yazalım. Metodlar bildirimlere yazı yazdıracak. Sonraki adımda butonu buluyoruz ve işleticiye bağlıyoruz. onClick metodunu şu anda boş bırakalım.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

final String TAG = “States”;

Button btnActTwo;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnActTwo = (Button) findViewById(R.id.btnActTwo);
btnActTwo.setOnClickListener(this);

Log.d(TAG, “MainActivity: onCreate()”);
}

@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, “MainActivity: onRestart()”);
}

@Override
protected void onStart() {
super.onStart();
Log.d(TAG, “MainActivity: onStart()”);
}

@Override
protected void onResume() {
super.onResume();
Log.d(TAG, “MainActivity: onResume()”);
}

@Override
protected void onPause() {
super.onPause();
Log.d(TAG, “MainActivity: onPause()”);
}

@Override
protected void onStop() {
super.onStop();
Log.d(TAG, “MainActivity: onStop()”);
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, “MainActivity: onDestroy()”);
}

@Override
public void onClick(View v) {
}
}

Tek bir etkileşimde hangi metodların hangi sırayla çağrıldığını geçen derste öğrendik. Şu anda ilgilendiğimiz konu, iki etkileşimin davranışı. Bunu öğrenmek için ikinci etkileşime ihtiyacımız var. Bu yeni etkileşime “ActivityTwo” ismini verelim. Geçen dersi hatırlatıyoruz (ders 19). İlk başta yeni klası (klasın ismi “ActivityTwo” olsun) oluşturacağız ve sonra yeni etkileşimi AndroidManifest.xml dosyasında kayıt edeceğiz. Ayrıca yeni layout dosyayı oluşturmayı unutmuyoruz. Layout’un ismi two.xml olsun. Aşağıdaki verdiğim kodla dolduruyoruz:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
<TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="This is Activity Two">
</TextView>
</LinearLayout>

 

Yukarıdaki yazdığımız kodun amacı ikinci etkileşimde “This is Activity Two” yazısını yazdırmak. Şimdi ActivityTwo.java’ya aşağıdaki kodu kopyalayalım:

 

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ActivityTwo extends Activity {

final String TAG = “States”;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
Log.d(TAG, “ActivityTwo: onCreate()”);
}

@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, “ActivityTwo: onRestart()”);
}

@Override
protected void onStart() {
super.onStart();
Log.d(TAG, “ActivityTwo: onStart()”);
}

@Override
protected void onResume() {
super.onResume();
Log.d(TAG, “ActivityTwo: onResume()”);
}

@Override
protected void onPause() {
super.onPause();
Log.d(TAG, “ActivityTwo: onPause()”);
}

@Override
protected void onStop() {
super.onStop();
Log.d(TAG, “ActivityTwo: onStop()”);
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, “ActivityTwo: onDestroy()”);
}
}

 

Daha önce boş bıraktığımız onClick metodu aşağıdaki kodla dolduralım:

@Override
public void onClick(View v) {
    Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
  }

CTRL+SHIFT+O (import) yapmayı unutmuyoruz.

Koddun amacı ikinci etkileşimi çağırmak. Bildirim filtresini geçen dersteki gibi ayarlıyoruz. Ve bildirimlere bakıyoruz.

Her şey kaydedelim ve çalıştıralım.

 

1. Adım: Uygulamayı çalıştırıyoruz. Karşımıza MainActivity çıkıyor.

TwoActivity

 

Bildirimler:

 

MainActivity: onCreate()
MainActivity: onStart()
MainActivity: onResume()

Geçen dersteki gibi 3 tane metod çağrılıyor. Etkileşim Stopped,Paused ve Resumed üç durumdan geçiyor.

 

2. Adım: Go to Activity Two butona basıyoruz ve ekranda ikinci etkileşimi görüyoruz.

Activity

Bildirimler:

MainActivity: onPause()
ActivityTwo: onCreate()
ActivityTwo: onStart()
ActivityTwo: onResume()
MainActivity: onStop()

 

MainActivity.onPause anlamı MainActivity odaklamayı kaybediyor ve Paused durumuna geçiyor. Sonra yeni etkileşim oluşuyor (onCreate), görüntülüyor (onStart) ve odaklanıyor (onResume). Son adımda MainActivity etkileşim ekrandan kayboluyor (onStop). Dikkat ettiyseniz MainActivity için onDestroy metodu çağrılmıyor. Bu demektir ki MainActivity yok edilmiyor. MainActivity Stopped durumunda bellekte tutuluyor. ActivityTwo etkileşim Resumed durumunda, odaklanmış ve onunla çalışma imkanı sunuyor.

3. Adım: Emülatorde Back butonu basıyoruz. Tekrar MainActivity’ye döndük.

TwoActivity

 

Bildirimler:

ActivityTwo: onPause()
MainActivity: onRestart()
MainActivity: onStart()
MainActivity: onResume()
ActivityTwo: onStop()
ActivityTwo: onDestroy()

 

ActivityTwo.onPause demek ActivityTwo etkileşim odaklamayı kaybediyor ve Paused durumuna geçiyor. MainActivity Stopped durumundan geri getirilmelidir. Geçen derste hatırlıyorsanız onRestart metodu hakkında bunu yazdık: “Eğer etkileşim sıfırdan oluşturmuyorsa ve Stopped durumundan çağrılıyorsa, o zaman onRestart metodu onStart metodundan önce çağırılır.” Bu tam bizim olayımız. Sonraki adımlarda onStart ve onResume metodu çağrılır. Bu demektir ki MainActivity etkileşim Paused (görüntüledi) ve Resumed (odaklandı). Son aşamada onStop ve onDestroy metodu çağrılır, bu da demektir ki ikinci etkileşim Stopped (görünmüyor) ve yok edilmiş.

 

4. Adım: Tekrar Back butona basıyoruz. Uygulamamız kapandı.

BackActivity

 

Bildirimler:

MainActivity: onPause()
MainActivity: onStop()
MainActivity: onDestroy()

 

MainActivity Paused, Stopped durumundan sonra yok edildi.

Bu günkü derslerimizde etkileşimin (Activity) görünmediği zaman bellekte olabildiğini öğrendik. Bu yüzden sorabilirsiniz neden ikinci aşamada MainActivity ekrandan kaybolduktan sonra bellekteydi ve üçüncü aşamada ikinci etkileşim ActivityTwo ekrandan kaybolduktan sonra yok edilmiş? Neden ikinci aşama istisnaydı? Bunu gelecek derste öğreneceğiz.

Gelecek derslerimizde:

–   Task (görev) hakkında bahsedeceğiz.

–   Activity (etkileşim) Paused durumunda sabitleyeceğiz.

 

 

 

 

Etiketler: Android programlamaecliplseonDestroyonRestartonResumeTaskTwo Activity State
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • Sıfırdan format nasıl atılır?
  • God of War: Ragnarok vs Spider-Man 2
  • Çift monitör setup önerisi
  • Uydu alıcısı tavsiyesi
  • Blazer mid 77 hangi numara tercih edilmeli?
  • IKEA Markus 8.799TL
  • Anadolu teknik lisesinde okumak mantıklı mıdır?
  • iPhone 13 iOS 18.7.1'e güncellenmeli mi?
  • Temizlenen Corsair Spec Delta kasa fanından ses geliyor
  • Doğal gaz tesisatının yerden geçmesi daha mı mantıklı?

Technopat Video

Şu an oynayan

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat
Technopat ofisi Eylül ayında neler aldı? 

Technopat ofisi Eylül ayında neler aldı? 

Giyilebilir Teknoloji
Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Haber

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
{title} {title} {title}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal