SORU
17 Ocak 2013, PERŞEMBE


Zamanlama görev yinelenen Android

Özel bir sunucu uygulaması ön planda olduğu sürece varlığını gönderme yinelenen bir görev olan bir uygulama tasarlıyorum.

web üzerinde aramalarım içinde birkaç farklı yaklaşımlar gördüm ve bunu yapmanın en iyi yolu ne olduğunu bilmek istedim.

Server arama programı için en iyi yolu nedir?

seçenekleri gördüm:

  1. Timer .

  2. ScheduledThreadPoolExecutor.

  3. Service.

  4. AlarmManager ile BroadcastReciever.

ne düşünüyorsun?

DÜZENLEME:

bu her zaman ne yaptığımı sunucu göndermem gerekiyor, ince bir sohbet odasında diğer kişilerle açık kez, ne yaptığımı bilmeleri gerektiği anlamına gelir.

whatsapp mesaj geri bildirim mekanizmasına benzer: message looks delivered

CEVAP
17 Ocak 2013, PERŞEMBE


Benim bilgim başı olarak görüşlerimi paylaşıyorum ama emin değilim. Ben her zaman eğer yanılıyorsam en iyi cevap kabul et .

Alarm Yöneticisi

Alarm Yöneticisi CPU bir uyandırma alarmı alıcı onReceive() yürütme yöntemi olduğu sürece kilit tutar. Bu telefonu yayını taşıma bitirene kadar uyku olmayacağını garanti eder. onReceive() döndüğünde Alarm Yöneticisi bu wake kilidi serbest bırakır. Bu telefon bazı durumlarda onReceive() yöntemi tamamlar tamamlamaz uyku anlamına gelir. Eğer alarm alıcı Context.startService() adlı telefonunuz varsa, istenen hizmet piyasaya sürülmeden önce uyku olasıdır. Bunu önlemek için, BroadcastReceiver Service ayrı bir uyarı yapması gerekir sizin hizmet kullanılabilir hale gelinceye kadar telefon çalışmaya devam eder sağlamak için politika kilidi.

Not: Alarm Yöneticisi eğer uygulamanızın çalışır durumda değilse bile uygulama kodunuzu belirli bir zamanda çalıştırmak istediğiniz durumlar için tasarlanmıştır. Normal zamanlama işlemleri (kene, zaman aşımı, vb) için daha kolay ve İşleyicisi kullanmak çok daha etkili olacaktır.

Zamanlayıcı

timer = new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {

        synchronized public void run() {

            \\ here your todo;
            }

        }}, 60000, 60000);

Timer ScheduledThreadPoolExecutor tarafından çözüldüğünü bazı dezavantajları vardır. En iyi seçenek değil

ScheduledThreadPoolExecutor.

java.util.Timer ScheduledThreadPoolExecutor (tercih edilen) bir arka plan iş parçacığı üzerinde düzenli aralıklarla ortaya bir eylem planlamak için kullanabilirsiniz.

İşte bir örnek son kullanma:

ScheduledExecutorService scheduler =
    Executors.newSingleThreadScheduledExecutor();

scheduler.scheduleAtFixedRate
      (new Runnable() {
         public void run() {
            // call service
         }
      }, 0, 10, TimeUnit.MINUTES);

ScheduledExecutorService tercih ettim

Ama buradaki programı uygulamanız çalışırken ortaya çıkar, kullanabileceğiniz Da düşün bir diğer yanıtlar önerilen Timer, ya da daha yeni ScheduledThreadPoolExecutor. Eğer uygulama çalışmıyor bile güncelleme alacak, AlarmManager ile gitmeli.

Alarm Yöneticisi eğer uygulamanızın çalışır durumda değilse bile uygulama kodunuzu belirli bir zamanda çalıştırmak istediğiniz durumlar için tasarlanmıştır.

Eğer uygulama kapalı olduğunda güncelleme planlıyorsanız, bir kez her on dakikada oldukça sık olduğunu unutmayın, ve böylece belki biraz güç tüketen de.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Numberphile

    Numberphile

    15 EYLÜL 2011
  • superflyy88

    superflyy88

    8 ŞUBAT 2009