iOS'ta çoklu görevin nasıl çalıştığını hala bilmeyen birçok insan var. Ancak öncelikle bunun gerçek bir çoklu görev olmadığını, sisteme veya kullanıcıya yük getirmeyen, oldukça akıllı bir çözüm olduğunu belirtmek gerekiyor.
iOS'ta arka planda çalışan uygulamaların işletim belleğini doldurduğu, bunun da sistemin yavaşlamasına ve pil ömrünün azalmasına yol açtığı, bu nedenle kullanıcının bunları manuel olarak kapatması gerektiği yönünde batıl inançlar sıklıkla duyulabilir. Çoklu görev çubuğu aslında çalışan tüm arka plan işlemlerinin bir listesini içermez, yalnızca en son başlatılan uygulamaları içerir. Böylece kullanıcının birkaç durum dışında arka planda çalışan işlemler hakkında endişelenmesine gerek kalmaz. Ana Sayfa düğmesine bastığınızda uygulama genellikle uyku moduna geçer veya kapanır, böylece işlemciyi veya pili artık yüklemez ve gerekirse gerekli belleği serbest bırakır.
Yani düzinelerce işleminiz çalışırken bu tam teşekküllü bir çoklu görev değildir.Ön planda her zaman yalnızca bir uygulama çalışır ve bu uygulama gerektiğinde duraklatılır veya tamamen kapatılır. Arka planda yalnızca birkaç ikincil işlem çalışır. Bu nedenle iOS'ta nadiren bir uygulama çökmesiyle karşılaşırsınız; örneğin Android, kullanıcının ilgilenmesi gereken uygulamaları çalıştırmaktan bunalmıştır. Bu, bir yandan cihazla çalışmayı tatsız hale getirirken, diğer yandan örneğin yavaş başlatmaya ve uygulamalar arasında geçişlere neden olur.
Uygulama çalışma zamanı türü
iOS cihazınızdaki uygulama şu 5 durumdan birindedir:
- Koşma: uygulama başlatıldı ve ön planda çalışıyor
- Arka plan: hala çalışıyor ama arka planda çalışıyor (diğer uygulamaları kullanabiliriz)
- Askıya alınmış: Hala RAM kullanıyor ancak çalışmıyor
- Aktif değil: uygulama çalışıyor ancak dolaylı komutlar (örneğin, uygulama çalışırken cihazı kilitlediğinizde)
- Koşmak yok: Uygulama sonlandırıldı veya başlatılmadı
Uygulama rahatsız etmemek için arka plana geçtiğinde kafa karışıklığı ortaya çıkıyor. Ana Ekran düğmesine bastığınızda veya uygulamayı (iPad) kapatmak için hareketi kullandığınızda uygulama arka plana geçer. Çoğu uygulama saniyeler içinde askıya alınır (Hızlı bir şekilde başlatılabilmeleri için iDevice'in RAM'inde saklanırlar, işlemciyi fazla yüklemezler ve dolayısıyla pil ömründen tasarruf ederler) Bir uygulama hafızayı kullanmaya devam ederse, serbest bırakmak için manuel olarak silmek için. Ancak bunu yapmak zorunda değilsiniz çünkü iOS bunu sizin için yapacak. Büyük miktarda RAM kullanan bir oyun gibi arka planda askıya alınmış zorlu bir uygulamanız varsa, iOS gerektiğinde bunu otomatik olarak bellekten kaldıracaktır ve uygulama simgesine dokunarak yeniden başlatabilirsiniz.
Bu durumların hiçbiri çoklu görev çubuğuna yansıtılmaz; panel, uygulamanın durdurulmuş, duraklatılmış veya arka planda çalışıyor olmasına bakılmaksızın yalnızca yakın zamanda başlatılan uygulamaların bir listesini gösterir. Ayrıca çalışmakta olan uygulamanın Çoklu Görev panelinde görünmediğini de fark edebilirsiniz.
Arkaplan işlemleri
Normalde Home tuşuna bastığınızda uygulama arka planda çalışacak, eğer kullanmıyorsanız beş saniye içerisinde otomatik olarak duraklayacaktır. Yani örneğin bir podcast indiriyorsanız, sistem onu çalışan bir uygulama olarak değerlendirir ve sonlandırmayı on dakika geciktirir. En geç on dakika sonra işlem hafızadan kaldırılır. Kısacası, indirme işleminin tamamlanması 10 dakikadan fazla sürmüyorsa Ana Sayfa Düğmesine basarak indirme işleminizi yarıda kesmek konusunda endişelenmenize gerek yok.
Arka planda süresiz çalışma
Sistem, işlem yapılmaması durumunda uygulamayı beş saniye içinde sonlandırır, indirme durumunda ise sonlandırma on dakika geciktirilir. Ancak arka planda çalışmasını gerektiren az sayıda uygulama vardır. iOS 5'te arka planda süresiz olarak çalışabilen uygulamalara bazı örnekler:
- Ses çalan ve bir süreliğine ara verilmesi gereken uygulamalar (telefon görüşmesi sırasında müziğin duraklatılması vb.),
- Konumunuzu takip eden uygulamalar (navigasyon yazılımı),
- VoIP çağrılarını alan uygulamalar, örneğin Skype kullanıyorsanız, uygulama arka planda olsa bile çağrı alabilirsiniz,
- Otomatik indirmeler (örn. Gazete Bayisi).
Artık bir görevi (arka planda indirme gibi) gerçekleştirmiyorlarsa tüm uygulamalar kapatılmalıdır. Ancak yerel Mail uygulaması gibi arka planda sürekli çalışan istisnalar da vardır. Arka planda çalışıyorlarsa hafızayı, CPU kullanımını kaplarlar veya pil ömrünü kısaltırlar.
Arka planda süresiz olarak çalışmasına izin verilen uygulamalar, müzik çalmaktan yeni Podcast bölümlerini indirmeye kadar çalışırken yaptıkları her şeyi yapabilir.
Daha önce de belirttiğim gibi kullanıcının arka planda çalışan uygulamaları kapatmasına hiçbir zaman gerek kalmıyor. Bunun tek istisnası, arka planda çalışan bir uygulamanın çökmesi veya uyku modundan düzgün şekilde uyanmaması durumudur. Kullanıcı daha sonra çoklu görev çubuğunda uygulamaları manuel olarak kapatabilir, ancak bu nadiren olur.
Yani genel olarak arka plan süreçlerini yönetmenize gerek yok çünkü sistem onlarla kendisi ilgilenecek. iOS'un bu kadar taze ve hızlı bir sistem olmasının nedeni budur.
Bir geliştiricinin bakış açısından
Uygulama, çoklu görevin bir parçası olarak toplam altı farklı durumla tepki verebilir:
1. applicationWillResignActive
Çeviride bu durum, uygulamanın gelecekte (birkaç milisaniyelik bir süre içinde) etkin uygulama (yani ön plandaki uygulama) olmaktan çıkacağı anlamına gelir. Bu durum örneğin uygulamayı kullanırken bir çağrı alındığında meydana gelir ancak aynı zamanda bu yöntem uygulama arka plana geçmeden önce de bu duruma neden olur, dolayısıyla bu değişiklikleri dikkate almanız gerekir. Bu yöntem aynı zamanda örneğin bir çağrı geldiğinde yaptığı tüm faaliyetleri askıya alması ve çağrının sonuna kadar beklemesi açısından da uygundur.
2. applicationDidEnterBackground
Durum, uygulamanın arka plana geçtiğini gösterir. Geliştiriciler, arka planda çalışması gerekmeyen tüm işlemleri askıya almak ve hafızadaki kullanılmayan verileri temizlemek ve zamanlayıcıların süresinin dolması, yüklenen görüntülerin ihtiyaç duyulmayan hafızadan temizlenmesi veya kapatılması gibi diğer işlemler için bu yöntemi kullanmalıdır. Uygulamanın bağlantıları arka planda tamamlaması kritik olmadığı sürece sunucularla bağlantılar. Yöntem bir uygulamada çağrıldığında, bir kısmının arka planda çalışması gerekmiyorsa, esasen uygulamayı tamamen askıya almak için kullanılmalıdır.
3. uygulamaWillEnterÖn Plan
Bu durum, uygulamanın aktif duruma geçeceği ilk durumun tersidir. Bu durum, uyku uygulamasının arka plandan devam edeceği ve önümüzdeki birkaç milisaniye içinde ön planda görüneceği anlamına gelir. geliştiriciler, uygulama arka plandayken etkin olmayan tüm işlemleri sürdürmek için bu yöntemi kullanmalıdır. Sunucularla bağlantılar yeniden kurulmalı, zamanlayıcılar sıfırlanmalı, görüntüler ve veriler belleğe yüklenmeli ve diğer gerekli işlemler, kullanıcı yüklenen uygulamayı tekrar görmeden hemen önce devam edebilmelidir.
4. uygulamaEtkin Oldu
Bu durum, uygulamanın ön plana geri yüklendikten sonra etkin hale geldiğini gösterir. Bu, kullanıcı arayüzünde ek ayarlamalar yapmak veya kullanıcı arayüzünü orijinal durumuna geri döndürmek vb. için kullanılabilecek bir yöntemdir. Bu aslında kullanıcının uygulamayı ekranda zaten gördüğü anda gerçekleşir, bu nedenle Bu yöntemde ve önceki yöntemde neler olacağını dikkatle belirleyin. Birkaç milisaniyelik farkla arka arkaya çağrılırlar.
5. uygulamaSonlandırılacak
Bu durum, uygulamadan çıkmadan birkaç milisaniye önce, yani uygulama gerçekten sonlandırılmadan önce gerçekleşir. Çoklu görevden manuel olarak veya cihazı kapatırken. Yöntem, işlenen verilerin kaydedilmesi, tüm faaliyetlerin sonlandırılması ve artık ihtiyaç duyulmayan verilerin silinmesi amacıyla kullanılmalıdır.
6. uygulamaDidReceiveMemoryWarning
En çok tartışılan son durumdur. Uygulamanın sistem kaynaklarını gereksiz yere kullanması durumunda, gerekirse iOS belleğinden kaldırılmasından sorumludur. İOS'un arka plan uygulamalarıyla tam olarak ne yaptığını bilmiyorum, ancak kaynakları diğer işlemlere serbest bırakmak için bir uygulamaya ihtiyacı varsa, sahip olduğu kaynakları serbest bırakması için bir bellek uyarısıyla onu ister. Yani uygulamada bu yöntem çağrılıyor. Geliştiriciler, uygulamanın ayırdığı bellekten vazgeçmesi, devam eden her şeyi kaydetmesi, gereksiz verileri bellekten temizlemesi ve aksi takdirde belleği yeterince boşaltması için bunu uygulamalıdır. Pek çok geliştiricinin, hatta yeni başlayanların bile bu tür şeyleri düşünmediği veya anlamadığı doğrudur ve bu durumda uygulamalarının pil ömrünü tehdit etmesi ve/veya arka planda bile sistem kaynaklarını gereksiz yere tüketmesi mümkündür.
hüküm
Bu altı durum ve bunlarla ilişkili yöntemler, iOS'taki tüm "çoklu görevlerin" arka planını oluşturur. Bu harika bir sistem, geliştiriciler, uygulamanın kullanıcı cihazlarına ne attığı, simge durumuna küçültülmesi veya sistemden uyarı alması vb. konusunda sorumlu olunması gerektiği gerçeğini göz ardı etmedikleri sürece.
kaynak: macworld.com
Yazarlar: Jakub Požárek, Martin Doubek (ArnieX)
Sizin de çözmeniz gereken bir sorununuz var mı? Tavsiyeye mi ihtiyacınız var yoksa doğru uygulamayı mı buluyorsunuz? Bölümdeki form aracılığıyla bizimle iletişime geçmekten çekinmeyin. Danışmanlık, bir dahaki sefere sorunuzu cevaplayacağız.
Merhaba, gerçekten harika bir makale, ancak bunun için herhangi bir teknik desteğiniz olup olmadığını merak ediyorum. Çünkü akşam yatmadan önce birkaç kez pili çözdüm ve wifi ve mobil veriler kapalıyken, wifi kapalı ve yalnızca 3G olan başka bir duruma göre daha fazla zaman aldı.
Ne yazık ki deneyim, iOS'ta uygulamaların manuel olarak kapatılması gerektiği ve sistemin artık eskisi kadar iyi çalışmadığı yönündedir.
iPhone'umu Windows Phone (6200,- için Samsung Omnia W) ile değiştirdim ve sistemin hızı tamamen farklı bir seviyede.
Korkarım Windows 8 Metro tabletleri çıktığında iPad'i de değiştireceğim...
@007 – evet, eğer eski iPhone3G'leri yeni WP'lerle karşılaştırıyorsanız, o zaman evet (bunu kim beklerdi ki?) WP biraz daha hızlı olacaktır. Aksi takdirde Karlulka hakkındaki dedikodular size pek uymuyor ve mevcut HW'yi karşılaştırmak uygun oldu. Ayrıca WP7'yi de satın aldım ve sonunda 4'leri elde ettim; bu, WP7'den tamamen farklı bir kullanılabilirlik düzeyini temsil ediyor. Bu yüzden hoş bir şekilde geçin ve fayanslar arasında sonsuz bir şekilde ilerleyin.
Paja'ya tamamen katılıyorum
Yine başka bir varilin enkazından katkıda bulunacağım - Samsung Galaxy S ve iPhone 4 - yaş açısından karşılaştırılabilir diyebilirim? iOS 4 zamanında, Android dışında kullanışlılık ve hız açısından Apple, uygulamalarla çalışma kavramını çok iyi çözmüştü ancak aynı şey artık Android için geçerli değil. Sonunda yine de 4S'yi aldım ve hiçbir şikayetim yok çünkü "sadece çalışıyor" .. ve çok hızlı çalışıyor!
Teori çok güzel... Ama pratikte yine de barda uygulamayı kapatıyorum ;)
Teşekkürler, çok ilginç, pragmatik, ilginç, akıcılıktan ve derinlikten yoksun değil. Günümüz gençliğinin bu yasaklı markaya olan tutkusunu önemli ölçüde vurguluyor! Ama onun için olduğu kadar bu yazı için de teşekkürler.
Makale tamamen yanlıştır.
Yanlışlıkla belirtildiği gibi Ana Sayfa düğmesine basıldığında uygulama çıkmıyor, ancak duraklıyor. Yani kesinlikle hafızadan silmeyin ve bırakmayın. Çalıştırmayı duraklatın, iOS bu uygulamaya %0 CPU süresi verecektir. Makalede belirtildiği gibi kesinlikle iDevice belleğinin herhangi bir yerinde "takas" yapmaz. Uygulama değiştirmeyi kullanmanın mümkün olması gerçekten sayesinde.
Telefonun daha yüksek öncelikli diğer uygulamaları çalıştıracak kadar az belleği olduğunda (genellikle başka bir uygulama ön planda çalışıyorsa), uygulama bellekten kaldırılır.
İlk durumda haklısınız, çeviri hatasıydı. Takas konusuna gelince, burada bundan bahsetmiyoruz, iOS cihazının depolama alanından değil, işletim hafızasından bahsediyoruz.
uygulamanın görüntüsü, bir komutla tekrar çağrılıncaya kadar sınırlı bir süre boyunca bellekte saklanır (bkz. 13,7 GB'nin 16 GB'si: 2,3 GB sistem ve askıya alınan uygulamalar için ayrılmıştır)
Bu nedenle Navigasyon, Skype ve benzeri uygulamaları birbirinden ayırmak gerekir, bu uygulamalar arka planda dahi aktif kalır veya belirli bir fonksiyon bitmeyerek örneğin konumu hakkında veri veya konum bilgisi göndermeye devam eder. Veya Vokul'un port modundaki dinlemesi gibi ve çoklu görev hala arka planda dinlemeye devam ediyor.
Bu uygulamalar pili tüketiyor ve iOS'u beklemeden manuel olarak kapatmak gerekiyor. diğerlerinde buna gerek yoktur, yalnızca uygulamanın çökmesi durumunda oradadır.
Makaleye katılmam mümkün değil. Min. 1. nesil iPad'de (iOS 5.0.1), çoklu görev çubuğunda çok sayıda "açık" uygulamanın mı yoksa yalnızca birkaçının mı olduğunu görmek açık. iOS belleği temizlemeye çalışıyor ancak bu yeterli değil; RAM'in küçük boyutu muhtemelen en büyük zayıflığı.
yani çoğu şey kullanılan sisteme ve donanıma bağlıdır, iOS 1 yüklü bir iPad 5.0.1'in 2. nesil bir iPad'e göre daha kötü olması oldukça mantıklıdır
Üzgünüm dostum, bu, çalışması gereken İDEAL yolun bir açıklamasıdır. Ne yazık ki gerçek tamamen farklı ve eğer Apple ürünlerini en azından benim kadar (yani ara sıra) kullanmış olsaydınız bunu bilirdiniz.
"iOS'ta arka planda çalışan uygulamaların işletim belleğini doldurduğuna dair batıl inançları sıklıkla duyabilirsiniz."
Bu bir batıl inanç değil, sadece bir gerçek. Sonuçta, makalede bunu kendiniz iddia ediyorsunuz.
"Daha önce de belirttiğim gibi kullanıcının arka planda çalışan uygulamaları kapatmasına hiçbir zaman gerek kalmıyor."
ANLAMSIZ. Bu sadece saçmalık, elma propagandası, bana kızmayın.
“Fakat bunu yapmak zorunda değilsiniz çünkü iOS bunu sizin için yapacak. Eğer arka planda beklemede olan, yüksek miktarda RAM kullanan bir oyun gibi zorlu bir uygulamanız varsa, iOS gerektiğinde bunu otomatik olarak bellekten kaldıracaktır ve uygulama simgesine dokunarak yeniden başlatabilirsiniz.”
Doğru değil. Durum biraz farklı. Tipik bir örnek; arka planda çalışan zorlu uygulamalar var, oyunlara ihtiyacım var. Tarayıcıyı başlatıyorum, birkaç sekme açıyorum -> daha fazla belleğe ihtiyacım var. Ne olacak? Ben arka planda zorlu uygulamalara devam ediyorum, tam tersine TARAYICIN KENDİSİ DÜŞÜYOR. Zorlu uygulamaları manuel olarak kapatırsam tarayıcı uzun süre sorunsuz çalışıyor.
Bu teori değil pratiktir. Ve uzun süredir bir Apple ürünü kullanıcısı olarak bunu hâlâ bilmiyor olmanıza şaşırdım.
Teşekkürler, bu çok iyi tanımlanmış ve iyi açıklanmış. Bana çok yardımcı oldun ;-) ♥
Sadece bir giriş olarak söyleyeyim, tıpkı Android'de olduğu gibi, ne iOS'tan yanayım ne de karşıyım, ancak burada yazıldığı gibi birkaç tuhaf şey var: "iOS'ta nadiren bir uygulama çökmesiyle karşılaşırsınız", sonra Android'de, uygulamalar muhtemelen yılda bir kez çöküyor: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Evet, ancak uygulamayı manuel olarak kapatmanız gereken durumlar gerçekten çok az, yaklaşık bir kez kullandım mı? ;-) ve Mobilemania'nın karşılaştırmalı testinin bağlantısını vermek oldukça anlamsız, Google'ın ödediği reklamları okumak istediğimde oraya bir göz atacağım ;-) herkes herhangi bir Android telefonu eline alabilir ve bu yani sistem az çok özel olarak tasarlanmış Galaxy Nexus hariç, temiz çalışmayacak. Genel olarak android bir felaket
@Mek – Birkaç yıldır Apple ürünlerini her gün kullanıyorum ve bu hiç başıma gelmedi, dolayısıyla teoriniz bir şekilde işe yaramıyor.
OT:
@redakce – Web sitesinde sürekli çalışıldığını veya bir şeyler olduğunu görebiliyorsunuz, ancak her şeyin olması gerektiği gibi çalışması bir haftayı almıyor gibi bir his var içimde. Ve artık buraya pek gelmiyorum çünkü yeni görünüm bana uymuyor. En azından iPhone'un mobil versiyonunu kullandım ama artık hiç çalışmıyor - nasıl oldu da? Şu anda yorumlardaki gönderilere yanıt vermiyorlar.
@SteveJSF Ne yazık ki işler her zaman istediğimiz gibi gitmiyor. Cevaplara gelince, yeni SEO eklentisi onları bozdu, şu anda çözülüyor.
WP-Touch da bazı nedenlerden dolayı hizmetimizi sonlandırdı, biz de bu eklentiden daha iyi bir çözüm bulmaya karar verdik. Yani yakında bir sonraki haberi sabırsızlıkla bekleyebilirsiniz :-)
Güzel makale. Uygulamaya gelince, birkaç şeye katıldığımı ve çoğu zaman belirtildiği gibi çalıştığını söylemek isterim, ancak ne yazık ki hala doğru şekilde çalışmayan kötü yazılmış uygulamalar var ve bunun gibi durumlar da var. bazı okuyucular tarafından not edildi. Skype'ın çok iyi bir örnek olduğunu düşünüyorum, pratikten hala arka planda çalıştığını biliyorum (ve bu iyi ve böyle olması gerekiyor), ancak sorun şu ki bu uygulama cihazın pilini çok tüketiyor ve Artık onu doğru dürüst göremiyorum. Bunun tersine, Facebook, Badoo vb. uygulamalar onlar da arka planda hala çalışıyorlar, ancak tüketimleri neredeyse fark edilmiyor (en azından ben fark etmiyorum). Yani hatanın bireysel uygulamalarda olduğunu düşünüyorum. Hangilerinin olduğunu bilseydiniz, yalnızca bunları manuel olarak kapatmanız yeterli olurdu!
Yani uygulama şu ki Facebook ihtiyaç duyulduğunda, Skype ise yalnızca ihtiyaç duyulduğunda çalışıyor.
Öte yandan, pilden tasarruf etmem gerekiyorsa ve iPhone'u mümkün olduğu kadar uzun süre "canlı" tutmam gerektiğini biliyorsam, çoklu görevde gereksiz olan her şeyi de kapatıyorum, ancak çoğunlukla bunun büyük bir etkisi olmuyor. ancak gerekirse 3G'yi, tüm mobil interneti, WiFi'yi, konum servislerini, uçak modunu, aydınlatma gücünü vb. sınırlandırıyorum. Rutinin bir parçası olarak çoklu görevlerde de yukarıda belirtilen uygulamaları kapatıyorum.
Yani kişisel olarak yazının doğru olduğunu düşünüyorum, maalesef bazı programcılar uygulamalarıyla bunları çürütüyorlar çünkü uygulamaları yanlış ve bana göre bunun sadece iki çözümü var 1. Eğer uygulamayı kullanmamak ve bir çözüm bulmak mümkünse mümkünse alternatif veya 2. Eğer mümkün değilse, örneğin Skype'a bakın, bunu raporda belirtilen programcıya yazın ve bu konuda bir şeyler yapacaklarını umun.
Uygulamaları manuel olarak devre dışı bırakmak anlamsız olabilir, ancak yine de yapıyorum. Ayrıca uygulama sistemini kapatmamaya, çalıştırmamaya (veya arka planda uykuda bırakmamaya) çalıştım ve pil ömrü çok daha düşüktü, yaklaşık üç hafta sonra iPad 2'yi de yeniden başlatmak zorunda kaldım, yavaş yanıt verdi. Bu yüzden uygulamaları manuel olarak kapatıyorum, pil daha uzun dayanıyor, şu anda geçen Noel günü yeniden başlattım ve iyi çalışıyor.
Bu arada, aynı şeyi Mac OS X'te de yapıyorum, sadece ihtiyacım olmayan uygulamayı kapatıyorum (CMD+Q), arka planda uyuyup gereksiz yere RAM tüketmesinden daha iyi (ki OS X bunu yapabilir') çok iyi çalışmıyorum). Çok az RAM'im var, yalnızca 8 GB, ancak 7 GB'lık Windows 8'de sistem yavaş yanıt vermedi veya değişmiyor, OS X'te bu oldukça yaygın bir olgudur (Bilgisayarı hiç kapatmadım, bunu Mac ile de yapıyorum, yani bir ay ve daha fazla çalışma süresi bir istisna değildir, sorun şu ki bazen RAM'i boşaltmak ve "hızlandırmak" için bir önlem olarak Mac'i yeniden başlatmak zorunda kalıyorum, Windows 7'nin buna ihtiyacı yok).
Ben daha çok uygulamanın nasıl patlatılacağıyla ilgileniyorum. Bana olan şey, uygulamanın (özellikle Geocaching'de) ana sunucudan bir şey yüklerken bir duruma girmesi ve bu durumda takılıp kalmasıydı. Ana sayfa düğmesi çalıştı, yeniden başlattıktan sonra donmuş duruma geri döndü (bıraktığım yer). Manuel çıkış (çoklu görev menüsüne, kapatmak için simgeyi ve eksi tuşunu basılı tutun) = uygulama kayboldu, yeniden başlatıldıktan sonra donduğu orijinal durumunda açıldı. Böylece her şeyi kapattım, telefonu kapattım, açtım, GİRİŞ'e çift tıkladım ve bir baktım; uygulamaların hepsi kapanmadan hemen önce kapatılmadan önceki halleriyle oradaydı. Yeniden başlatma da işe yaramadı - hava ısınıncaya kadar evde ve yukarıya doğru tutun. Yardımcı olan tek şey uygulamayı telefondan kaldırmak, yeniden başlatmak ve telefona yeniden yüklemekti. Bir şekilde almadım.
Bu Çoklu Görev yönetimi işe yarar ve bu durumlarla başa çıkmak geliştiricilere kalmıştır. Durumun tamamının daha ayrıntılı ve profesyonel bir açıklamasını merak edenler için, nasıl olduğunu buraya yazacağım.
Uygulama toplam 6 duruma yanıt verebilmektedir ve bu durumlar şunlardır:
applicationWillResignActive
applicationDidEnterBackground
uygulamaWillEnterÖn Plan
uygulamaDidBecomeActive
uygulamaSonlandırılacak
applicationDidReceiveMemoryWarning
Şimdi bu durumları daha detaylı anlatmaya çalışacağım.
applicationWillResignActive – bu durum, gelecekte (birkaç milisaniye içinde) uygulamanın aktif uygulama (yani ön plan uygulaması) olarak görevden ayrılacağı anlamına gelir; bu, örneğin uygulamayı kullanırken bir çağrı alındığında gerçekleşir, ancak aynı zamanda bu Bu nedenle bu durum, uygulama arka plana geçmeden önce bile tetiklenecektir, bu nedenle bu değişiklikleri dikkate almanız gerekir. Bu yöntem aynı zamanda örneğin bir çağrı geldiğinde yaptığı tüm faaliyetleri askıya alması ve çağrının sonuna kadar beklemesi açısından da uygundur.
applicationDidEnterBackground - bu durum, uygulamanın arka plana girdiğini gösterir; geliştiriciler, arka planda çalışması gerekmeyen tüm işlemleri askıya almak ve kullanılmayan verilerin ve diğer işlemlerin belleğini temizlemek için bu yöntemi kullanmalıdır; örneğin, zaman aşımı sürelerinin sona ermesi, Uygulamanın bağlantıyı arka planda tamamlaması kritik değilse, mutlaka ihtiyaç duyulmayacak veya sunucularla bağlantıyı sonlandıracak bellek yüklü görüntüler. Temel olarak, uygulamada çağrıldığında bu yöntem, bir kısmının arka planda çalışması gerekmiyorsa uygulamayı tamamen askıya almak için kullanılmalıdır.
applicationWillEnterForeground – bu durum, uygulamanın aktif duruma geçeceği ilk durumun tersidir. Bu uygulama durumu basitçe, önümüzdeki birkaç milisaniye içinde uyuyan uygulamanın arka plandan devam edeceği ve ön planda görüneceği (uygulama ön plana girer) anlamına gelir; bu yöntem, geliştiriciler tarafından, uygulama çalışırken etkin olmayan tüm işlemleri sürdürmek için kullanılmalıdır. arka planda sunucularla bağlantılar yeniden kurulmalı, zamanlayıcılar sıfırlanmalı, görüntüler ve veriler belleğe yüklenmeli ve diğer gerekli işlemler, kullanıcı yüklenen uygulamayı tekrar görmeden hemen önce devam edebilmelidir.
applicationDidBecomeActive – bu durum, uygulamanın ön plana geri yüklendikten sonra henüz aktif hale geldiğini gösterir; bu, kullanıcı arayüzünde ek ayarlamalar yapmak veya kullanıcı arayüzünü orijinal durumuna geri yüklemek vb. için kullanılabilecek bir yöntemdir. bu yöntem gerçekte gerçekleşir Kullanıcı zaten ekranda görebildiğinde, bu yöntemde ve önceki yöntemde neler olup bittiğini bilançodan belirlemek gerekir. Birkaç milisaniyelik farkla arka arkaya çağrılırlar.
applicationWillTerminate - bu durum, uygulama sonlandırılmadan birkaç milisaniye önce, yani uygulama gerçekten sonlandırılmadan önce gerçekleşir. Çoklu görevden manuel olarak veya cihazı kapatırken. İşlenen verilerin kaydedilmesi ve tüm faaliyetlerin sonlandırılması ve artık ihtiyaç duyulmayan verilerin silinmesi için bu yöntem kullanılmalıdır.
applicationDidReceiveMemoryWarning - ve bu burada çok tartışılan bir durumdur, gerekirse iOS, sistem kaynaklarını gereksiz yere kullanıyorsa uygulamayı bellekten kaldıracaktır. İOS'un arka plan uygulamalarıyla tam olarak ne yaptığını bilmiyorum, ancak kaynakları diğer işlemlere serbest bırakmak için bir uygulamaya ihtiyacı varsa, tuttuğu kaynakları serbest bırakması için bir hafıza uyarısıyla onu ister. Dolayısıyla uygulamada bu yöntem çağrılır ve geliştiriciler, uygulamanın sahip olduğu hafızadan vazgeçmesi, işlenenleri kaydetmesi ve gereksiz verileri hafızadan silmesi ve aksi takdirde hafızayı yeterince boşaltması için bunu uygulamalıdır. Pek çok geliştiricinin, örneğin yeni başlayanların, bu tür şeyleri düşünmediği veya anlamadığı doğrudur ve bu durumda uygulamalarının pil ömrünü tehlikeye atması ve/veya arka planda bile sistem kaynaklarını gereksiz yere tüketmesi mümkündür. Uygulama hafıza uyarısı aldıktan sonra hiçbir şey yapmazsa ve sistem kaynaklarını eskisi gibi tüketmeye devam ederse iOS'un nasıl davranacağını bilmiyorum.
Bu birkaç durum ve ilişkili yöntemler, iOS'taki tüm "çoklu görevin" arkasındadır... geliştiriciler, uygulamaların simge durumuna küçültülmesi durumunda kullanıcılarının cihazlarında ne oluşturacağı konusunda sorumlu olma ihtiyacını göz ardı etmezlerse harika bir sistemdir veya sistemden uyarılar almak ve daha fazlası…
Umarım bu kısa açıklama, uygulamanın her şeyin sorunsuz çalışmasını sağlamada nasıl rol oynadığını anlamanıza yardımcı olur. Yani bunun kullanıcı tarafından yanlış kullanım hatası olduğunu söylemek neredeyse mümkün; bu şu şekilde anlaşılabilir: Çoğunlukla amatör geliştiricilerin ücretsiz uygulamalarını çok sayıda kullanırsanız, iOS cihazınız büyük bir uygulama kullanmanıza göre daha kötü çalışır. deneyimli veya profesyonel geliştiricilerin sunduğu ücretsiz ve ücretli uygulamaların sayısı. Bu, her iki çevrede de istisnaların olmadığı anlamına gelmiyor. Örneğin Foursquare oldukça tuhaf ve talepkar davranıyor ve aynı zamanda onların hafıza ve pil yönetimine çok zaman ayıran çok yetenekli geliştiriciler olması beklenir, ancak bunun tersi doğrudur. 4SQ ile ilgili en büyük sorun, çoğu zaman kilitlenen ve bunalmış olan sunucularla iletişimdir. Bu sadece bilinen uygulamaların bile problemler yaşadığının bir örneğidir ve bu 4SQ'nun harika bir hizmet olduğu gerçeğini değiştirmez.
İyi eğlenceler Elmalar!! :)
Bilgileri yazarın izniyle makaleye ekledik ;-)
Üzgünüm, ENTER paragrafların arasında her yerdeydi, yorumların en azından biraz ZENGİN METİN BİÇİMLENDİRMESİNE sahip olması için burada bu konuda bir şeyler yapabilirlerdi.
ArnieX: Yorumunuz için teşekkürler!!
Şu Faramir: Ben tam senin probleminle ilgiliyim, senin durumunda faydası olur mu bilmiyorum ama kendi tecrübelerime dayanarak biliyorum ki eğer uygulamayı kapatırsan (çoklu görevde) kapanması birkaç saniye alır, yani eğer Kapattığınızda, kesinlikle bitene kadar birkaç saniye beklemenizi öneririm (emin olmak için yaklaşık 10 saniye bekliyorum) ve ancak o zaman yeniden başlatıyorum.
Rica ederim ;) Katkıda bulunma fırsatım olursa yardımcı olmaktan mutluluk duyarım.
Meeb nasıl olmalı, ICQ veya FB sohbetine girdiğimde 10 dakika sonra otomatik olarak çıkış yapıyor ve çevrimdışı oluyorum veya çalışmaya devam ediyor mu? açıklama için teşekkürler :P
On dakika sonra uygulamanın internet bağlantısı kesilir. Ancak yine de Meeba sunucusunda çevrimiçi olacaksınız ve birisi size yazdığında anında bildirim alacaksınız. Uygulamayı tekrar açtıktan sonra kısa sürede bağlantı kurulacak ve mutlu bir şekilde sohbete devam edebilirsiniz.
Dolayısıyla, bağlantı verdiğiniz makaleyi doğru anladıysam, istatistikler yalnızca uygulama çökmelerine ilişkindir; bu, çökmelerin meydana gelebileceği vakaların oldukça küçük bir yüzdesidir. Dolayısıyla bu "araştırmadan" iOS'un daha az kararlı olduğu sonucunu çıkarmak bana göre imkansız. Ayrıca Forbes'tan alınan makalenin çevirmeni, uygulama çökmelerine ilişkin verileri sağlayan şirketin diğerlerinin yanı sıra Google tarafından da desteklendiğini belirtmeyi unutmuş ("Crittercism, Google Ventures tarafından desteklenmektedir...").