Etkinliklere giriş

Activity sınıfı, Android'in önemli bir bileşenidir kullanıma sunulma şekli ve bir araya getirilme biçimi, uygulamalı platformun uygulama modelinin bir parçasıdır. Programlama paradigmalarından farklı olarak hangi uygulamaların main() yöntemiyle başlatıldığı, Android sistem, bir Activity örneğinde kodu başlatırken belirli aşamalarına karşılık gelen belirli geri çağırma yöntemlerini geliştirmenizi sağlar.

Bu belgede etkinlik kavramı açıklanmakta ve ardından yardımcı olacak bazı temel bilgiler verilir. Uygulamanızın mimarisiyle ilgili en iyi uygulamalar hakkında daha fazla bilgi için bkz. Uygulama Mimarisi Kılavuzu.

Etkinlik kavramı

Mobil uygulama deneyimi, mobil cihazlara yönelik oyun deneyiminden bir kullanıcının uygulamayla etkileşimi her zaman aynı yerden başlamamaktadır. Bunun yerine, kullanıcı yolculuğu genellikle belirleyici olmayan bir şekilde başlar. Örneğin, ana ekranınızdan bir e-posta uygulamasını açarsanız e-posta listesidir. Bunun aksine, kullanıma sunulduğunda doğrudan e-posta uygulamasının ekranına giderek bir e-posta yazmaktır.

Activity sınıfı bu yaklaşımı kolaylaştırmak için tasarlanmıştır. Bir uygulama başka bir uygulama çağırdığında, arama uygulaması diğer uygulamada bir etkinliği çağırır uygulamadır. Bu şekilde etkinlik uygulamanın kullanıcıyla etkileşimi için giriş noktası. Bir etkinliği Activity sınıfının bir alt sınıfıdır.

Etkinlik, uygulamanın çizim yaptığı pencereyi sağlar kullanıcı arayüzü. Bu pencere genelde ekranı kaplar ancak, daha küçük olabilir. diğer pencerelerin üzerinde kayabilir. Genellikle tek bir aktivitede bir ekranı uygular. Örneğin, bir uygulamanın etkinliklerinden biri bir Tercihler ekranı uygulanırken başka bir etkinlik Fotoğraf Seç ekranında kullanabilirsiniz.

Çoğu uygulama birden fazla ekran içerdiğinden, uygulamalar birden fazla yardımcı olur. Uygulamadaki bir etkinlik genellikle ana etkinliği, kullanıcı uygulamayı başlattığında görünen ilk ekrandır. Her etkinlik daha sonra başka bir etkinlik başlatabilir. farklı işlemler yapabilirsiniz. Örneğin, basit bir e-postadaki ana faaliyet uygulaması, e-posta gelen kutusunu gösteren ekran sunabilir. Bundan sonra temel gibi görevler için ekran sağlayan başka etkinlikler de başlatabilir. ve ayrı ayrı e-postaları açan kişiler olabilir.

Etkinlikler tutarlı bir kullanıcı deneyimi oluşturmak için birlikte çalışsa da her etkinlik yalnızca az da olsa diğer etkinliklerle ilişkilidir; mevcut bağımlılıkları genellikle minimum düzeydedir. Hatta, etkinlikler genellikle başka uygulamalara ait etkinlikler başlatır. Örneğin, Bir tarayıcı uygulaması, bir sosyal medya uygulamasının Paylaşım etkinliğini başlatabilir.

Uygulamanızda etkinlikleri kullanmak için bunlarla ilgili bilgileri ve etkinlik yaşam döngülerini uygun şekilde yönetmeniz gerekir. Bu dokümanın geri kalanında bu konular açıklanmaktadır.

Manifest'i yapılandırma

Uygulamanızın etkinlikleri kullanabilmesi için etkinlikleri, manifestoda belirtilen diğer özellikleri görebilirsiniz.

Etkinlikleri bildirme

Etkinliğinizi beyan etmek için manifest dosyanızı açın ve bir <activity> öğesini, <uygulama> öğesine dokunun. Örnek:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

Bu öğe için gerekli tek özellik: android:ad, Bu değer, etkinliğin sınıf adını belirtir. Ayrıca kullanıcılara etiket, simge veya kullanıcı arayüzü teması gibi etkinlik özelliklerini tanımlayan anahtar kelimeler bulun. Bu ve diğer özellikler hakkında daha fazla bilgi için <activity> öğe referans belgelerinden oluşur.

Not: Uygulamanızı yayınladıktan sonra, etkinliği değiştirmemelisiniz gösterir. Aksi takdirde uygulama kısayolları gibi bazı işlevlerin bozulmasına neden olabilirsiniz. Yayınladıktan sonra kaçınılması gereken değişiklikler hakkında daha fazla bilgi için Değişmeyen Şeyler.

Amaç filtrelerini bildir

Amaç filtreleri Android platformunun çok güçlü bir özelliğidir. Onlar sadece temel olarak değil, aynı zamanda açık istek aynı zamanda dolaylı istektir. Örneğin, açık bir istek, sisteme "E-posta Gönderme etkinliğini başlat" komutunu verebilir hesaplayın." Öte yandan örtülü bir istek, "E-posta Gönderme ekranı başlat" bir beceridir." Sistem kullanıcı arayüzü, kullanıcıya hangi uygulamanın kullanılacağını sorduğunda kullanılan bir amaç filtresidir.

Kendinizi bu alanda geliştirmenizi sağlayacak bir <intent-filter> özelliğinin <activity> öğesi. Bu öğenin tanımı bir <action> öğesi ve isteğe bağlı olarak <category> öğesi ve/veya bir <data> öğesine dokunun. Bu öğeler birleştirerek etkinliğinizin yanıt verebileceği amaç türünü belirtin. Örneğin, aşağıdaki kod snippet'i, metin verileri gönderir ve diğer etkinliklerden bunu yapmak için istekler alır:

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

Burada Örneğin, <action> öğesi, bu etkinliğin veri gönderdiğini belirtir. <category> tanımlanıyor öğesi, DEFAULT olarak etkinliği etkinleştirir ve başlatma isteklerini alır. <data> öğesi, dönüşüm hunisinin gönderebileceğinizi unutmayın. Aşağıdaki kod snippet'i, yukarıda açıklanan etkinlik:

Kotlin

val sendIntent = Intent().apply {
    action = Intent.ACTION_SEND
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, textMessage)
}
startActivity(sendIntent)

Java

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
// Start the activity
startActivity(sendIntent);
Uygulamanızın bağımsız olmasını amaçlıyor ve diğer uygulamaların etkinleştirmesine izin vermemek istiyorsanız herhangi bir şeyi başka intent filtrelerine ihtiyacı vardır. Yapmak istemediğiniz etkinlikler kullanabileceğiniz başka bir intent filtresine bunları kendi başınıza başlatmanıza yardımcı olabilir. Daha fazla bilgi için etkinlikleriniz amaçlara yanıt verebilir. Daha fazla bilgi için Amaçlar ve Amaç Filtreleri'ni inceleyin.

İzinleri bildirme

Manifest dosyasında Kontrol edilecek <activity> etiketi hangi uygulamaların belirli bir etkinliği başlatabileceğini öğrenmeniz gerekiyor. Bir ebeveyn etkinliği, her iki etkinlik de kendi hesaplarında aynı izinlere sahip olmadıkları sürece manifest'ini kullanabilirsiniz. Bir <uses-permission> öğesi tanımlarsanız her alt etkinliğin eşleşen bir <uses-permission> öğesine dokunun.

Örneğin, uygulamanız SocialApp adlı varsayımsal bir uygulamayı kullanmak istiyorsa sosyal medyada gönderi paylaşmak için söz konusu izni SocialApp'in kendisi tanımlamalıdır. çağrı yapan bir uygulamada şunlar olmalıdır:

<manifest>
<activity android:name="...."
   android:permission=”com.google.socialapp.permission.SHARE_POST”

/>

Ardından, SocialApp'i çağırmanıza izin verilmesi için uygulamanızın şurada ayarlanan izinle eşleşmesi gerekir: SocialApp'in manifesti:

<manifest>
   <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>

Genel olarak izinler ve güvenlik hakkında daha fazla bilgi için Güvenlik ve İzinler.

Etkinlik yaşam döngüsünü yönetme

Bir etkinlik, yaşam döngüsü boyunca bir dizi durumdan geçer. Durumlar arasındaki geçişleri işlemek için bir dizi geri çağırma kullanırsınız. Aşağıdaki bölümler tanıtacağım.

onCreate()

Sistem, etkinliği'ne dokunun. Uygulamanız, projenizin temel bileşenlerini en iyi şekilde değerlendirin: Örneğin, uygulamanız görünümler oluşturmalı ve verileri burada görebilirsiniz. En önemlisi de bunu yapmanız setContentView(). kullanın.

onCreate() tamamlandığında bir sonraki geri arama her zaman onStart() olur.

onStart()

onCreate() çıkarken etkinlik Başlangıç durumuna girer ve etkinlik kullanıcı tarafından görülebilir hale gelir. Bu geri çağırma, etkinliğin son hazırlıkları için gereken tutarları ön plana alarak etkileşimli hale gelmeye başlıyorlar.

onResume()

Sistem bu geri aramayı, etkinlik etkileşim kurmaya başlamadan hemen önce çağırır gösterme fırsatı sunar. Bu noktada etkinlik, etkinliğin en üstündedir ve tüm kullanıcı girişlerini yakalar. Bir uygulamanın temel işlevinin büyük bir kısmı onResume() yönteminde uygulanır.

onPause() geri çağırması her zaman onResume() takip eder.

onPause()

Etkinlik kaybolduğunda sistem onPause() numarasını çağırır odaklanıp Duraklatıldı durumuna geçer. Bu durum, örneğin kullanıcı Geri veya Son Çağrılar düğmesine dokunur. Sistem sizi aradığında Etkinliğiniz için onPause(), bu teknik olarak etkinliğinizin hâlâ kısmen görünür olduğu anlamına gelir ancak çoğu zaman kullanıcı etkinlikten ayrılıyor ve etkinlik kısa süre içinde Durduruldu veya Devam ettirildi durumu.

Duraklatılmış durumdaki bir etkinlik, kullanıcı aşağıdaki durumlarda kullanıcı arayüzünü güncellemeye devam edebilir. kullanıcı arayüzünün güncellenmesini bekliyor. Bu tür etkinliklere örnek olarak navigasyonun gösterilmesi verilebilir. oynatan bir medya oynatıcı vardır. Bu tür etkinliklere odaklanılamasa bile kullanıcı kullanıcı arayüzünün güncellenmeye devam etmesini bekliyor.

Bağlantılarınızda kullanmamalısınız Uygulamayı veya kullanıcıyı kaydetmek için onPause() ağ çağrıları yapabilir ve veritabanı işlemleri yürütebilir. Veri kaydetme hakkında daha fazla bilgi için bkz. Etkinlik durumunu kaydetme ve geri yükleme.

onPause() yürütme işlemini tamamladığında bir sonraki geri çağırma onStop() veya onResume() (neye bağlı olarak) etkinlik Duraklatılmış durumuna geçtikten sonra gerçekleşir.

onStop()

onStop() etkinlik artık kullanıcı tarafından görülemez. Bu durum, etkinliğin yok edilmesi, yeni bir etkinliğin veya mevcut bir etkinlik giriliyor Devam ettirilen bir durumdur ve durdurulan etkinliği kapsar. Bunların hepsinde, durdurulan etkinlik artık fark etmiyor.

Sistemin çağıracağı bir sonraki geri çağırma onRestart() ( kullanıcının etkileşime girdiğini göstermek için veya onDestroy() bu etkinlik tamamen sonlandırılıyorsa.

onYeniden Pazarlama()

Durduruldu durumundaki bir etkinlik şöyle olduğunda sistem bu geri çağırmayı kullanır: yeniden başlatılacak. onRestart(). etkinliğin durdurulduğu andaki durumunu geri yükler.

Bu geri çağırmanın ardından her zaman şu adım gelir: onStart()

onDestroy()

Sistem, bir etkinlik kaldırılmadan önce bu geri çağırmayı çağırır.

Bu geri çağırma, etkinliğin aldığı son çağrıdır. onDestroy() tüm kaynakların verimli ve kullanılabilir olmasını sağlamak için etkinlik veya bunu içeren işlem yok edildiğinde serbest bırakılır.

Bu bölümde yalnızca bu konuya giriş sunulmaktadır. Daha yaşam döngüsü ve geri çağırma süreçlerinin ayrıntılı bir şekilde ele alınmasını sağlar. Etkinlik Yaşam döngüsü.