Mobil Programlama Önemli Tanımlar ve Notlar

kenzai

Özel Üye
22 Ara 2010
8,561
31
Trondheim
oOkE2q.jpg



Merhaba bu yazımda sizlere mobil programlama tanımları ve önemli notları paylaşacağım umarım yardımcı olur, kolay gelsin. ;)

Activity: Kullanıcı ile etkileşimi sağlayan birimdir. Uygulamalar genelde birden fazla activityden oluşur.

Android uygulamaları içerisinde oluşturulan Activity’ler Activity sınıfının alt sınıflarıdır.

Intent: Activity’ler arasında bilgi aktarımı saglayan bilesenlerdir. Bir kullanıcı giris formuna girilen kullanıcı adı sifre gibi bilgilerin kontrol edilerek baska bir forma aktarılması vs..

Task: Activity’lerin Intent’leri kullanarak farklı aktivity'leri çağırması ve oluşan zincir bir “Task” olarak adlandırılır.

Sevices: Arka plan görevlerinin işletilmesini sağlar. Örneğin bir web sayfasını ziyaret ederken arka planda müzik çalması. Activity sınıfı gibi Service sınıfı da yaşam döngüsünü kontrol etmeye yarayan metotlara sahiptir. (Stop/Restart)

Content Providers: Bir veri kaynağına bağlanmayı sağlayan sınıftır. Insert, Query, Update, Delete metotlarına sahiptir.

Broadcast Recievers: Activity’e benzerler ama kendilerine ait bir arayüzleri yoktur. Tipik bir kullanım bir uygulamayı belli bir saatte aktif etmeyi sağlayan bir alarmı yakalamaktır.


lOWELp.jpg


Uygulama Bileşenleri

4 farklı uygulama bileşeni vardır. Farklı amaç, farklı life cycle

Activities: Tek bir ekran tek bir arayüz sunar. Bir uygulamada birden fazla activity olabilir ama hepsi birbirinden ayrıdır. Bir uygulama baska bir uygulamanın bir activity sini çalıstırabilir. Örnegin bir kamera uygulaması bir e-mail gönderme uygulamasının bir activitisini çagırabilir.

Bir activity Activity sınıfının bir alt sınıfıdır.

Services: Arka planda çalısan uzun soluklu uygulamalardır yada uzak erişimler için kullanılır. Arka planda müzik çalarken kullanıcı başka bir uygulamayı kullanıyor olabilir yada farklı bir bileşen mesela activity, bir servisi başlatabilir ve onla haberleşebilir.

Content Provider: Uygulama verilerinin yönetilmesini sağlar.

Broadcast Recievers: Sistem tabanlı çagrılara cevap verir.Birçok duyuru sistem tarafından gelir. Ekranınkapatılması, batarya zayıf, picture was captured vs..

Uygulamalar broadcastleri başlatabilir. Örneğin diğer uygulamalara bir datanın download işleminin tamamlandığı bilgisini gönderebilirsiniz.

NOT: Activities, services ve broadcast recievers asenkron bir mesaj olan intent ile aktivite olurlar. Intentler runtime anında her bir bileşeni sizin uygulamanızın olup olmadığına bakmaksızın birbirine bağlarlar.


  • Bir intent Intent sınıfından oluşturulur.

The manifest file: Android sistem bir uygulama bileşenini başlatmadan önce manifest dosya içerisinde olup olmadığını kontrol eder. Manifest dosyada tanımlı bileşenler uygulamanın root dizininde tanımlı olmaları gerekir.

Manifest dosyada neler var?


  1. Uygulamanın ihtiyaç duyduğu izinler.
  2. Minimum API level
  3. İhtiyaç duyulan donanım ve yazılım bileşenleri .
  4. Android Framework API dışında ihtiyaç duyulan API kütüphanleri.

Layout: Layout bir activity için kullanıcı arayüzü olusturmamızı saglar.


  • Iki yolla Layout oluşturabilirsiniz.

  1. XML içerisine tanımlama yaparak,
  2. Runtime anında oluşturarak,

1 nolu yöntem farklı ekran görüntülerine göre farklı xml loyout’lar tasarlamamıza olanak tanır Bu bir avantaj.


Kod:
Main_layout.xml dosyasını yüklemek için;
public v o i d onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
}


Attributes : Her View yada Viewgroup objesi kendine ait xml özellige sahip olabilir.

Örnegin:TextView objesinin textSize özelligi

ID: Her bir View object unique sayısal bir ID degerine sahiptir. Bu deger bilesenin agaç üzerinde farklı olmasını saglar.

Bilesene referansta bulunmak için

Kod:
 android:id=”@android:id/empty“ “+” ya gerek kalmaz.


Her activity diğerini çalıştırır. Her seferinde yeni bir activity başlar diğer acvtivity ise durur ve “backstack” denilen stac yapısına atılır.

Activity’nin alabildiği call back metotlar vardır.

  • onCreate()
  • onPause()

Intent Filters

Bir activityile kendisini uygulamanın diger bilesenlerinin nasıl aktif edebilecegi ile ilgili birçok özellik birçok intent filter ‘a sahiptir.

Diğer bir activitiyi startActivity() metodu ile ve ona bir intent göndererek başlatırız.

Kod:
Intent intent=new Intent(this,SignInActivity.class);
startActivity(intent);


Cihazda var olan uygulamayı kullanmak istersek örneğin bir mail gönderme olsun.

Kod:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL,recipientArray);
startActivity(intent);


kOWElm.jpg


Managing life cycle

Bir activity 3 temel duruma sahiptir.

1)Resumed: Activity ön plandadır diger bir deyisle “running ” durumdadır

2)Paused: Baska bir activity açıktır ve suanki activity transparan olarak yada ekranın bir tarafında görünür durumdadır. Paused bir activity hala yasıyordur. Fakat sistem tarafından düsük hafıza durumlarında sonlandırılabilir.

3)Stopped: Activity baska bir activity tarafından arka plana gönderilmistir.

Stopped activity hala yaşıyordur. Kullanıcıya uzun süre gösterilmez ise ve hafıza gereksinimi durumunda sistem tarafından öldürülür.


Entire lifetime: onCreate() – onDestroy() arasında geçen süredir.

Visible lifetime: onStart() – onStop() arasında geçen süredir. onStop() metodu yeni bir activity çagırıldıgında yada activity uzunca süre visible yapılmadı ise.

Foreground lifetime: onResume() – onPause() Bu durumda uygulama ekrandadır.

Fragments: Bir activity içerisinde bir arayüzün bir parçasını yada bir davranışını temsil eder. Birden fazla fragmenti aynı activity içerisinde kullanabilirsiniz. Farklı activitylerden çağırarak da tekrar kullanabilirsiniz.

Loaders: Activity veya Fragmentler için asenkron şekilde veri yükleme işlemi için kullanılırlar.

Task: Bir kullanıcının bir işi yapmak için kullandığı activity topluluğudur. Bu activitiy’ler bir stack yapısı içirisinde yer alır.

Services: Arka planda çalışır, bir arayüz göremeyiz.


  • Başka bir uygulama bileşeni servisi başlatır ve servis arka planda çalışmaya devam eder.
  • Servisler farklı formlarda karşımıza çıkarlar


1. Bir bileşen (activity) tarafından başlatırlırlar

(startService()), Kendisini başlatan bileşen yok olsa bile servis görevine devam eder.

2. Çağıran bileşene bir değer döndürmez,Servisin görevi biterse (örneğin bir download) durur.

Content providers: Yapısal olarak oluşturulmuş verilere erişimi yönetir.


  • Üç temel bilesen activity, service ve broadcast-reciever kendi aralarında “intent” ler ile haberlesirler.

  • Intent leri yaymanın veya oluşturmanın farklı yöntemleri vardır:


  1. Bir activityi baslatmak veya geri deger döndürmek için,
  2. Bir servisi başlatmak için yada devam etmekte olan bir servise yeni komutlar göndermek için. Context.startService()
  3. Broadcast (BR) metotlarından herhangi birine gönderilen Intent nesneleri (Context.sendBroadcast(),Context.sendOrderedBroadcast(),or Context.sendStickyBroadcast()) ilgilenen tüm diğer br’ lere dağıtılır.

Action: Intentlerin olmazsa olmaz bölümüdür. Action elemanı intent filter'ın reaksiyon göstermesini istediğimiz aksiyonun tanımlanmasını sağlar. Intent'in geri kalanının nasıl yapılandırılacağı hakkında bilgi verir.

Category: Bir intent filtresi birden fazla category elemanına sahip olabilir activity nin nasıl çağrılacağını tanımlamak için kullanılır.

Data: Bir intent in gönderilmesi ile beraberinde bir urı de gönderilir. Url'ler very kaynağını tanımlamak için kullnılır.

Extras: Daha fazla bilgi için anahtar değer çiftleri şeklinde bilgi tutar.

Flags: Çeşitli türlerdeki bayraklar.(?)

Manifestxml: Tüm bilesenler manifest dosyada tanımlanmalıdır.

Manifest dosya Android sistem ile uygulama arasında bir arayüz görevi görür.

Kaynaklar (Resources): Uygulamalarımızda kullandıgımız sabit nesneleri kaynaklar olarak tanımlarız.

Bitmap resimler, renkler, layout tanımları, arayüzde kullanılan stringler vs.. bu kaynaklar içerisine girer.

Kod:
First activity sayfasında bulunan butona tıklayarak second activity’e geçmek için kullanılacak kod:

Intent i = new Intent(FirstActivity.this, SecondActivity.class);


Butona xml içindede tıklama özelliği verilebilir:

Kod:
[FONT=Verdana] android:onClick=”nextPage”[/FONT]


gibi.

Butonun tıklama özelliği:


Kod:
bGonder = (Button) findViewById(R.id.btn_Gonder);
// Button nesnesine tıklandıgında çagırılan inner class yapısı
bGonder.setOnClickListener(new OnClickListener()
{
@Override
public v o i d onClick(View v)
{
//EditText nesnesinden aldıgımız metni
//TExtView nesnesinin text özelligine esitliyoruz.
tView.setText(eText.getText());
}


Yaratılan objeyi kullanmak için;

Kod:
[FONT=Verdana] Button myButton = (Button) findViewById(R.id.my_button);[/FONT]


kullanılır.
LAYOUT u kodlarla oluşturmak istersek:


Kod:
@Override
public v o i d onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linLayout = new LinearLayout(this);
linLayout.setOrientation(LinearLayout.VERTICAL);
LayoutParams linLayoutParam = new
LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
TextView tv = new TextView(this);


// textview oluşturup ekleme

Kod:
tv.setText(“TextView”);
tv.setLayoutParams(lpView);
linLayout.addView(tv);
setContentView( linLayout, linLayoutParam);
}


// Layout ekrana getirilmesi için çağrılır

Event Handling: Olaylar (Events) uygulamaların kullanıcılarla etkileşim kurmaları anında bilgi topalamanın en kolay yoludur.

Android olay yönetiminde aşağıdaki 3 kavarm önemlidir.


Event Listeners: İçerisinde bir tane callback metod bulunduran View class içerisinde bir arayüzdür (interface). Bu metotlar bu listenere bir View objesi kayıtlandığı zaman (register) ortaya tetiklenirler.

Event Listeners Registration: Bir Event Listenere kayıtlanma işlemidir. Event Listener bir olayı tetiklediği zaman bir handler çağrılır.

Event Handlers: Bir olay meydana geldiginde ve bir event listenera o olayla ilgili kayıtlanma meydana geldiginde Event listener Event Handler çagrımı yapar.

Servisler: Android uygulamalarında arka planda çalısan ve kullanıcının uygulamayla olan ilişkisini etkilemeyen işlemler için Service adında bir sınıf bulunur.

Servisler iki farklı yapıda bulunabilir:

1. Started (Baslatılmıs)

Bir uygulama bileseni startService() metodunu kullanarak bir hizmeti baslattıgında, servis baslatılmıs olur.

Bir kez baslatıldıktan sonra, servisi baslatan bilesen yok edilse bile, servisler arka planda sonsuza kadar çalısabilir.


2. Bound (Baglanılmıs)

Bir uygulama bileşeni bindService() metodunu kullanarak bir hizmete bağlandıgında, servis bağlanılmıs olur. Bağlanılmış bir servis bileşenlerin servis ile iletişim sağlaması, istekler göndermesi, sonuçlar elde etmesi ve karşılıklı iletişim (Interprocess Communication – IPC) ile işlemler gerçekleştirmesi için bir istemci-sunucu arayüzü sağlar.

onStartCommand(): Aktivite gibi bir bileşen startService() komutunu kullanarak bir servisi başlatmak istediğinde, sistem bu metodu çağırır. Bu metod bir kez çalıstıktan sonra, servis başlatılır ve arka planda sonsuza dek çalışır. Bu metodu kullanırsanız, işi bittiğinde stopSelf() veya stopService() ile servisi sizin sona erdirmeniz gerekir.

onBind(): Bir bileşen bindService() komutunu kullanarak bir servise bağlanmak istediğinde, sistem bu metodu çağırır. Bu metod için yazdığınız kodlar ile bir Ibinder değeri döndürerek istemcilerin servis ile iletişim kurabileceği bir arayüz sağlamanız gerekir. Bu metodu daima çalıstırmanız gerekir, ancak bağlanmaya engel olmak istersniz null bir değer geri döndürmelisiniz.

onCreate(): Bir servis ilk oluşturulduğunda, sistem bu metodu çağırır.

Eğer servis zaten çalısıyorsa, bu metod çağrılmaz.

onDestroy(): Bir servis kullanılmadığında ve yok edildiğinde, sistem bu metodu çağırır. Servis thread, kayıtlı dinleyici, alıcı vb. System kaynaklarını boşaltmak için bu metodu kullanır.

Kullanıcı ile etkileşimi sağlayan birimdir. Uygulamalar genelde birden fazla activityden oluşur.

Android uygulamaları içerisinde olusturulan Activity’ ler Activity sınıfının alt sınıflarıdır.


Anlatım da eksik, düzeltilmesi gereken yerleri ve düşüncelerinizi yazabilirsiniz.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.