Welches ist die beste Methode, um eine Aufgabe wiederholt in Android zu excecute? (ZB: – Erfrischende Noten, Update Ui)

In Android gibt es einige Optionen für Refresh Handling wie Timer, TimerTask, ScheduledExecutorService, AlarmManager & Handler . Welches ist die beste Methode, dies zu tun.

Hat jemand die Ressourcennutzung der oben genannten Methoden überprüft ?. Hiermit liste ich die Umsetzung der oben genannten Methoden auf.

  • Android - AlarmManager Erholung
  • Ist es möglich, einen Empfänger in einem Testfall zu registrieren?
  • Feuer-Benachrichtigung alle 24 Stunden und zum genauen Zeitpunkt von 8 Uhr
  • Android: Wie benutzt man AlarmManager?
  • Was ist die Definition des Einschlafens für ein Android-Gerät?
  • Wie kann man Alarm Manager arbeiten, wenn Android 6.0 im Doze-Modus?
  • Handler verwenden, um eine Aufgabe wiederholt auszuführen

    final Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { new MyScheduledTask.execute(param); } }, TimeInterval); 

    Verwenden Sie Timer, um einen Task wiederholt auszuführen

     timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { synchronized public void run() { new MyScheduledTask.execute(param); } }}, 10000, 10000); 

    Verwenden Sie ScheduledExecutorService, um eine Aufgabe wiederholt zu berechnen

     ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate (new Runnable() { public void run() { new MyScheduledTask.execute(param); } }, 0, 10, TimeInterval); 

    Verwenden Sie Timer mit TimerTask, um eine Task wiederholt auszuführen

     Timer timer = new Timer(); timer.schedule(new UpdateTimeTask(),1, TimeInterval); class UpdateTimeTask extends TimerTask { public void run() { new MyScheduledTask.execute(param); } } 

    AlarmManager für die Ausführung der geplanten Aufgabe

     public void setupTask(){ // check task is scheduled or not boolean alarmUp = (PendingIntent.getBroadcast(this, 0, new Intent("YourPackageHere.AlarmReceiver"), PendingIntent.FLAG_NO_CREATE) != null); if ( !alarmUp) { Intent intent = new Intent("YourPackageHere.AlarmReceiver"); intent.putExtra("activate", true); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 1); calendar.set(Calendar.SECOND, 0); AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 7); calendar.set(Calendar.MINUTE, 0); alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2); } } 

    AlarmManager Klasse

     public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.hasExtra("activate")) { new MyScheduledTask.execute(param); } } } 

    Manifest

     <receiver android:name="YourPackageHere.AlarmReceiver"></receiver> 

  • Unterschiede zwischen TextWatcher 's onTextChanged, beforeTextChanged und afterTextChanged
  • Fehler: Die Symbolklassenansicht kann nicht gefunden werden
  • "Compatibility-v4-r4.jar" fehlt in Maven Repo
  • Wie man android Anwendung im Hintergrund
  • Android-Speicheranalyse
  • 3D-Objekt-Rendering in openCV mit Metaio in Android
  • 2 Solutions collect form web for “Welches ist die beste Methode, um eine Aufgabe wiederholt in Android zu excecute? (ZB: – Erfrischende Noten, Update Ui)”

    Für kontinuierlich online benötigen Sie einen androiden Service , der über einem Thread läuft. Sie können eine der oben genannten Methoden verwenden, die Sie mit einem Service angegeben haben.

    ABER als Sie eine Chat-Anwendung machen, müssen Sie den Server kontinuierlich für alle 2-3 Sekunden treffen, was meiner Meinung nach nicht gut für den Benutzer ist (in Bezug auf Internet-Daten, die Ihre App verwenden wird).

    Das am besten empfohlene Protokoll für eine Chat-Anwendung ist XMPP ( Jabber ). Es definiert alle Regeln, die eine normale Chat-Anwendung haben sollte und ist sehr einfach zu implementieren. Es ist ein Push-Benachrichtigungstyp-Server, der automatisch eine Benachrichtigung an den Client schickt, sobald eine neue Nachricht eingegangen ist oder ein neuer Freund hinzugefügt wird. (Auch Gtalk verwendet dieses Protokoll)

    Es gibt einen guten Open-Source-Server, der die XMPP Integration namens Openfire zur Verfügung stellt , die ich empfehlen würde.

    Das gleiche Unternehmen bietet auch eine Bibliothek für Client-Side-Integration namens Smack, die Sie leicht in Ihrer Anwendung implementieren können, um die einfache Chat-Funktionalität zu verwenden.

    Handler ist die beste Methode, um Sie laufen können es rekursiv laufen wird es gut denkt so …

    Wenn Sie mehr erwarten, sollten Sie folgen MQTT-Methode, die ist gut in Messaging-Protokoll

    http://mqtt.org/wiki/doku.php/mqtt_on_the_android_platform

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.