Android Timer innerhalb eines Dienstes

Ich habe Probleme beim Ausführen eines Timers in einem Dienst, den ich erstellt habe. Die Aufgabe, die der Timer einfach anruft, wird nicht aufgerufen. Ich weiß, dass der Service beginnt, wie ich in ihm gebraten habe und sie sind angerufen, aber nicht, wenn sie innerhalb des Timers sind. Hilfe geschätzt.

Dienstleistungsklasse:

  • Wie kann ich ein Bild von einem Punkt zum anderen mit Android Canvas verschieben
  • Android, wie man int in String konvertiert?
  • Wie kann ich den stadtnamen meiner aktuellen position bekommen
  • Könnte ein Service einen anderen Dienst binden
  • Android und bekomme eine Ansicht mit id cast als String
  • Wie man auf Ressource mit dynamischen Namen in meinem Fall zugreifen?
  • public class LocalService extends Service { private static Timer timer = new Timer(); private Context ctx; public IBinder onBind(Intent arg0) { return null; } public void onCreate() { super.onCreate(); ctx = this; startService(); } private void startService() { timer.scheduleAtFixedRate(new mainTask(), 0, 5000); } private class mainTask extends TimerTask { public void run() { Toast.makeText(ctx, "test", Toast.LENGTH_SHORT).show(); } } public void onDestroy() { super.onDestroy(); Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show(); } } 

    Hauptklasse:

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startService(new Intent(RingerSchedule.this, LocalService.class)); } 

  • Finden Sie heraus, ob ActionBar gestapelt ist
  • Menschliche Körperteilerkennung in Android
  • Was sind die Standard-Farbwerte für das Holo-Thema auf Android 4.0?
  • Standardwert der Android-Präferenz
  • Android-Datenbank-Datenträger-Image ist fehlerhaft
  • Lesen von sqlite-Datei aus dem Asset-Ordner
  • 2 Solutions collect form web for “Android Timer innerhalb eines Dienstes”

    Android erlaubt keine UI-Ereignisse wie Toasts von außerhalb des Hauptfadens. Der Lauf wird angerufen, aber der Toast wird ignoriert.

    Um den Toast auf dem UI-Thread zu erstellen, kannst du einen Handler und eine leere Nachricht wie folgt verwenden:

     public class LocalService extends Service { private static Timer timer = new Timer(); private Context ctx; public IBinder onBind(Intent arg0) { return null; } public void onCreate() { super.onCreate(); ctx = this; startService(); } private void startService() { timer.scheduleAtFixedRate(new mainTask(), 0, 5000); } private class mainTask extends TimerTask { public void run() { toastHandler.sendEmptyMessage(0); } } public void onDestroy() { super.onDestroy(); Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show(); } private final Handler toastHandler = new Handler() { @Override public void handleMessage(Message msg) { Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_SHORT).show(); } }; } 

    Danke, ich musste auch den Timer abbrechen ..

     public void onDestroy() { timer.cancel(); Toast.makeText(this, "ServiceTalkGeology stopped.", Toast.LENGTH_SHORT).show(); super.onDestroy(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.