Bu nihayetinde sorunuza gelecektir, ancak önce bu yorum sırasında verilen çeşitli cevaplara çeşitli yorumlarınızda ortaya koyduğunuz bir dizi sorunu ele almak istiyorum. Fikrinizi değiştirmek gibi bir niyetim yok - dahası, bunlar gelecekte bu yazıyı okumak için gelenler için burada.
Mesele şu ki, Android uygulamamın ne zaman sonlandırılacağını belirlemesine izin veremem. kullanıcının tercihi olmalıdır.
Milyonlarca insan, ortamın uygulamayı gerektiği gibi kapattığı modelden son derece memnun. Bu kullanıcılar, bir Web sayfasını "sonlandırma" veya bir termostatı "sonlandırma" konusunda düşündüklerinden daha fazla Android uygulamasını "sonlandırmayı" düşünmezler.
iPhone kullanıcıları aynı şekilde, iPhone düğmesine basıldığında uygulamanın sonlandırıldığı gibi "hissetmemesi" gerekmez, çünkü birçok iPhone uygulaması, uygulama gerçekten kapatılmış olsa bile kullanıcının kaldığı yerden devam eder (yalnızca iPhone'dan beri) şu anda bir üçüncü taraf uygulamasına izin verir).
Yukarıda söylediğim gibi, uygulamamda çok şey oluyor (veriler cihaza PUSHed, her zaman orada olması gereken görevlerle listeler, vb.).
"Her zaman orada olması gereken görevlerle listeler" ne anlama geldiğini bilmiyorum, ancak "veriler cihaza PUSHed ediliyor" hoş bir kurgudur ve her durumda bir etkinlik tarafından yapılmamalıdır. AlarmManager
Verilerinizi maksimum güvenilirlik için güncellemek üzere zamanlanmış bir görev (yoluyla ) kullanın.
Kullanıcılarımız giriş yapar ve her telefon araması aldığında bunu yapamaz ve Android uygulamayı öldürmeye karar verir.
Bununla ilgilenen birçok iPhone ve Android uygulaması var. Genellikle, kullanıcıları her seferinde manuel olarak oturum açmaya zorlamak yerine oturum açma kimlik bilgilerini tutmalarıdır.
Örneğin, uygulamadan çıkarken güncellemeleri kontrol etmek istiyoruz
Bu herhangi bir işletim sisteminde bir hatadır. Bildiğiniz gibi, uygulamanızın "çıkılmasının" nedeni işletim sisteminin kapanması ve güncelleme işleminizin orta akışta başarısız olmasıdır. Genel olarak, bu iyi bir şey değil. Başlangıçta güncellemeleri kontrol edin veya güncellemeleri tamamen eşzamansız olarak kontrol edin (örn. Zamanlanmış bir görev aracılığıyla), asla çıkışta değil.
Bazı yorumlar, geri düğmesine basmanın uygulamayı hiç öldürmediğini gösterir (yukarıdaki sorumdaki bağlantıya bakın).
GERİ düğmesine basmak "uygulamayı öldürmez". Kullanıcı GERİ düğmesine bastığında ekrandaki etkinliği sonlandırır.
Yalnızca kullanıcılar sonlandırmak istediğinde sonlandırılmalıdır - asla başka bir şekilde. Android'de böyle davranan uygulamaları yazamıyorsanız, Android'in gerçek uygulamalar yazmak için kullanılamayacağını düşünüyorum = (
O zaman Web uygulamaları da olamaz. Veya WebOS , modellerini doğru anlarsam (henüz bir tane ile oynama şansı bulamadıysanız). Tüm bunlarda, kullanıcılar hiçbir şeyi "sonlandırmaz" - sadece ayrılırlar. iPhone biraz farklıdır, çünkü şu anda sadece bir şeyin bir seferde çalışmasına izin vermektedir (birkaç istisna dışında) ve bu nedenle ayrılma eylemi uygulamanın hemen sonlandırılmasını ima eder.
Uygulamayı gerçekten bırakmamın bir yolu var mı?
Herkesin söylediği gibi, kullanıcılar (BACK aracılığıyla) veya kodunuz (aracılığıyla finish()
) şu anda çalışan etkinliğinizi kapatabilir. Kullanıcılar, düzgün yazılmış uygulamalar için, Web uygulamalarını kullanmak için "çık" seçeneğinden fazlasına ihtiyaç duymazlar.
Tanım olarak iki uygulama ortamı aynı değildir. Bu, yenileri ortaya çıktıkça ve diğerleri gömüldükçe ortamlardaki eğilimleri görebileceğiniz anlamına gelir.
Örneğin, "dosya" nosyonunu ortadan kaldırmak için büyüyen bir hareket vardır. Çoğu Web uygulaması kullanıcıları dosyaları düşünmeye zorlamaz. iPhone uygulamaları genellikle kullanıcıları dosyaları düşünmeye zorlamaz. Android uygulamaları genellikle kullanıcıları dosyaları düşünmeye zorlamaz. Ve bunun gibi.
Benzer şekilde, bir uygulamanın "sonlandırılması" kavramını ortadan kaldırmaya çalışan büyüyen bir hareket vardır. Çoğu Web uygulaması kullanıcıyı oturumu kapatmaya zorlamaz, bunun yerine belirli bir süre kullanılmadığında örtük olarak kullanıcının oturumunu kapatır. Android ile aynı şey ve daha az bir ölçüde iPhone (ve muhtemelen WebOS).
Bu, uygulama tasarımına daha fazla önem verilmesini, iş hedeflerine odaklanılmasını ve önceki bir uygulama ortamına bağlı bir uygulama modeline bağlı kalmamayı gerektirir. Bunu yapmak için zamana veya eğilime sahip olmayan geliştiriciler, mevcut zihinsel modellerini kıran yeni ortamlardan hayal kırıklığına uğrayacaklar. Bu, her iki ortamın da hatası değildir, bundan ziyade etrafından akan fırtınalar için bir dağın hatasıdır.
Örneğin, Hypercard ve Smalltalk gibi bazı geliştirme ortamları, uygulama ve geliştirme araçlarını tek bir kurulumda birleştirdi. Bu kavram, uygulamalara yönelik dil uzantılarının dışında (ör . Excel'de VBA , AutoCAD'de Lisp ) fazla bir şey yakalamadı . Bu nedenle, uygulamanın kendisinde geliştirme araçlarının varlığını kabul eden zihinsel modellerle gelen geliştiriciler, modellerini değiştirmek veya kendilerini modellerinin geçerli olacağı ortamlarla sınırlamak zorunda kaldılar.
Yani, yazdığınızda:
Keşfettiğim diğer dağınık şeylerle birlikte, Android için uygulamamızı geliştirmenin olmayacağını düşünüyorum.
Bu şu an için en iyisi, sizin için, gibi görünüyor. Benzer şekilde, Android ile bildirdiğiniz aynı sorunların bazıları Web uygulamalarında da (örneğin, "sonlandırma" yok) bulunduğundan, başvurunuzu Web'e aktarmaya çalışmamanız konusunda size danışmanlık yaparım. Veya, tersine, birgün eğer yapmak liman Web'e uygulamanızı, Web uygulamanın akış Android için daha iyi bir eşleşme olabileceğini bulmak olabilir ve o zaman bir Android portu yeniden ziyaret edebilirsiniz.