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);
İ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ü.