Android telefonda “ev” düğmesine basıldığında çalışan bir programa ne olur?


27

Bir şey beni şaşırtıyor. Android'de bir program kullanıyor ve sanki "ev" düğmesine basıyorsam, ana ekranı görüyorum ve programı yeniden çalıştırabilirim ve o programı daha önce olduğu gibi aynı durumda görebiliyorum - yani program tam olarak yeniden başlatılmamış gibi görünüyor, sadece askıya alındı ​​ve sonra devam edildi.

Yine de, Hava Kontrol oyunu ile tutarlı bir şekilde gerçekleşmiyor gibi görünüyor. Bazen Hava Kontrolü oynarken ve "ev" e bastığımda ve sonra Hava Kontrolü'nü tekrar çalıştırın - duraklatıldı (sanki "duraklat" düğmesine basmışım gibi) ve oyuna devam edebilirim. Bazen aynı, Air Control'ün oyunu bırakıp yeniden başlamasına yol açıyor.

Görünüşe göre bir şey anlamıyorum.

Buradaki anlaşma nedir? "Ev" düğmesine basıldığında bir programa ne olur? Çalışmaya devam ediyor mu yoksa ne yapıyor?


Ana sayfa düğmesine basılmasının daha yüksek güç tüketimi olmasına neden olacağından şüpheliyim.
Akış

Yanıtlar:


12

HomeUygulamanız arka planda çalışmaya devam ederken, tuşuna basmak sizi uygulamadan ana ekrana geçirir. Bu bir Windows PC'deki pencereler arasında geçiş yapmak gibi bir şey.

Telefonunuzun hafıza gibi kaynakları azaldığında, arka planda çalışan uygulamaları kapatmaya başlar, böylece telefonunuz şimdi yapmaya çalıştığınız şey için yeterli kaynağa sahip olur. Oyunlar genellikle, diğer uygulamalardan çok daha fazla bellek ve CPU kullandıklarından, kaynakları korumak için telefonun "öldüreceği" ilk uygulamalar arasındadır. Bu yüzden bazen oyununuz hala duraklatılmış durumda ve bazen Android sizin için kapattı.

BackDüğme aslında kapalı olduğunu çok yakın uygulamalar için bir yoldur.

Ayrıca bkz . Android'deki uygulamaları kapatmanın doğru yolu nedir?


26

Android Geliştirme belgesi Görevler ve Geri Yığın aslında bunu oldukça iyi bir şekilde kapsıyor. İlgili bir alıntı:

Görev, kullanıcılar yeni bir göreve başladığında ya da Giriş ekranından GİRİŞ tuşu ile girebildiklerinde "arka plana" gidebilen yapışkan bir birimdir. Arka planda iken, görevdeki tüm etkinlikler durdurulur, ancak görev için arka yığın bozulmadan kalır; şekil 2'de gösterildiği gibi, başka bir görev varken görev yalnızca odağı yitirdi. ön plan "böylece kullanıcılar kaldıkları yerden devam edebilirler. Örneğin, geçerli görevin (Görev A) yığında üç etkinlik bulunduğunu varsayalım - bu, geçerli etkinlik altında. Kullanıcı HOME tuşuna basar, sonra uygulama başlatıcısından yeni bir uygulama başlatır. Giriş ekranı göründüğünde, Görev A arka plana gider. Yeni uygulama başladığında, sistem bu uygulama için bir görev başlatır (Görev B) kendi etkinlik grubuyla. Bu uygulamayla etkileşim kurulduktan sonra, kullanıcı tekrar Home'a ​​geri döner ve Task A'yı başlatan uygulamayı seçer. Şimdi, Task A ön plana çıkar - yığınındaki üç etkinlik de tamamdır ve yığının en üstündeki aktivite devam eder. Bu noktada, kullanıcı Ana Sayfaya giderek ve bu görevi başlatan uygulama simgesini seçerek (veya en son görevleri ortaya çıkarmak ve birini seçmek için HOME tuşuna dokunup basılı tutarak) Görev B'ye geri dönebilir. Bu Android'de çoklu görev örneğidir. kullanıcı ayrıca Ana Sayfaya gidip bu görevi başlatan uygulama simgesini seçerek (veya en son görevleri ortaya çıkarmak ve birisini seçerek HOME tuşuna basılı tutarak) Görev B'ye geri dönebilir. Bu Android'de çoklu görev örneğidir. kullanıcı ayrıca Ana Sayfaya gidip bu görevi başlatan uygulama simgesini seçerek (veya en son görevleri ortaya çıkarmak ve birisini seçerek HOME tuşuna basılı tutarak) Görev B'ye geri dönebilir. Bu Android'de çoklu görev örneğidir.

Not: Arka planda aynı anda birden fazla görev yapılabilir. Bununla birlikte, kullanıcı aynı anda birçok arka plan görevi yürütüyorsa, sistem hafızayı geri kazanmak için etkinlik durumlarının kaybolmasına neden olmak için arka plan etkinliklerini tahrip etmeye başlayabilir. Faaliyet durumu hakkında aşağıdaki bölüme bakın.

Özet : HomeGerçekten bir şey yapmadan ve durumunu koruyarak, tuşuna bastığınızda ve belleğe oturduğunuzda görev arka plana taşınır . Bu, (genellikle konuşursak) göreve geri dönebileceğiniz ve kaldığı yerden devam edeceği anlamına gelir. Bununla birlikte, Android sistemi hafızayı geri kazanması gerekiyorsa arka plan görevlerini öldürebilir - ve edecek. Ne zaman ve bu olursa tamamen sisteme bağlıdır ve muhtemelen devam ederken tutarsız davranışlar görmenizin nedeni budur.

Görev sistem tarafından yok edilirse, tekrar başlattığınızda yeniden oluşturulması gerekecektir. Bu nedenle, uygulama yazarı imha işlemi sırasında uygulamanın durumunu korumak için önlemler almadıkça, kaybedilecektir (ve oyun gibi şeylerde kesin durumu kaydetmek oldukça pratik değildir).

Başka bir iyi (ama aynı zamanda ayrıntılı) belge de Faaliyet Yaşam Döngüsünü kapsayan belgedir (biraz aşağıya doğru kaydırırsanız hoş bir akış şeması vardır).


Bu yüzden, etkinlik / süreç temelinde değil, görev başına öldürülürler. İkincisi, muhtemelen istenmeyen bir durum olan kısmi görev öldürmeye izin verecek.
jiggunjer 9:16

4

Giriş tuşuna basmak, kullanıcının başlatıcıyı göstererek yeni bir Görev başlatmasını sağlar. Tüm aktif Görevler (ve bu nedenle "Hava Kontrol" örneğinizle birlikte Etkinlikler) yöntemlerini arayacaktır onPause().

Geri göründüğünde önceki durumu tam olarak geri yüklemek Uygulamaya (ve Faaliyetlerine) bağlıdır. Etkinlik arka planındayken Uygulama Süreci'nin ölmesi de mümkündür, ancak bu, kullanıcıların deneyimini etkilememelidir. Kullanıcı, bir Etkinlik henüz duraklatıldıysa veya öldürüldüyse, bir fark söyleyememelidir. Bu, Android yaşam döngüsü yönetiminin hatalı uygulanmasının bir ipucu olabilecek Hava Kontrolünün farklı davranışlarını açıklayabilir.


"Öldürmek" derken, yok edilmek yerine durduğunu söylüyorsun. Bir süreci öldürdüğünüzde normal Linux terminolojisine (örneğin Etkinlik) destroy()karşılık gelen uygulama bileşenlerini düşünüyorum.
jiggunjer 9:16

Hayır, yok edilmiş demek istiyorum.
Akış

Giriş tuşuna bastığınızda onStopyöntem çağrılır. Öldürülen bir işlem onDestroyed, aslında benzer olmasına rağmen , etkinliğin yöntemini aldığı anlamına gelmez . Bir Faaliyet sürecinin "öldürülmesi", VM'nin RAM'den kaldırıldığı anlamına gelir. Bana göre bu (Android'in onu öldürmesi) kullanıcı deneyimini etkiliyor gibi görünüyor.
jiggunjer 9:16

4

Bu sitede itibarımı hala oy kullanamayacak kadar düşük, bu yüzden Flow'un cevabını vurgulamayı düşünüyorum. Uygulamamın birinde bu sorunla karşılaşmaya devam ediyorum. Çeşitli iplik kontrol ünitelerine sahibim ve durumlarını açıkça onPause () konumuna kaydetmeniz ve ardından onResume () içindeki durumları geri yüklemeniz gerekiyor - Android, durumlarını otomatik olarak hatırlamıyor.

Başka bir komplikasyon, bazen Android'in yalnızca onResume () işlevini çağırmasını beklediğinizde bir uygulamanın onCreate () işlevini çağırmasıdır.

Bu nedenle, Hava Kontrolü'ndeki (veya başka bir uygulamadaki) sorununuz o uygulamaya özgüdür ve davranışı düzeltme için geliştiriciye bildirmelisiniz. Çoğu uygulamanın Market'te bir iletişim e-postası vardır.

BTW, uygulama yaşam döngüsünü anlamak istiyorsanız, Ed Burnette'nin Merhaba, Android Bölüm 2'sini, özellikle de rakam 2.3'ü öneririm.


3

Ana Sayfa Düğmesi Bir uygulamada basıldığında:

Çoğu uygulama durumlarını kaydeder (devam ettirilirken kendini tutarlı tutmak için gerekli olan herhangi bir veri biti) ve cihaz başlatıcı uygulamasına geçer.

Ana Ekran Düğmesi Ana ekrandayken basılır:

Bu, pek çok 3. parti rampa tarafından konfigüre edilebilir; ancak birçoğu sizi "ana" ana ekranınıza geri getirmekte varsayılandır (varsayılan başlatıcı bunu yapar).

Arkadaşınızın ne hakkında endişelendirebileceği:

Uygulamaları değiştirmek hafızada yoğun olabilir ve birkaç disk yazma işleminin verileri kaydetmesine neden olabilir. Bu pil kullanır; bununla birlikte, genellikle cihazlardaki batarya tüketiminin ana nedeni değildir (işletim sistemleri bu işlemleri yapmak için optimize edilmiştir).

Bazı uygulamalar arka plan uygulaması olarak çalışmaya devam eder, bu nedenle ana sayfa düğmesine basmak onları öldürmez (örneğin, Google Play Müzik ana sayfa düğmesine bastıktan sonra çalmaya devam eder).

Arkadaşınız, ana ekran düğmesine basarak programdan çıkmadığınızdan ve bu nedenle hala çalıştığından endişe duyabilir. Android bu uygulamaları gerektiği gibi kaldıracak.

Siz ve arkadaşınız, en fazla gücü kullanan ekrana daha çok ilgi göstermelisiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.