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.

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> 

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.