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:

  • Schnelle und einfache String verschlüsseln / entschlüsseln in JAVA
  • Android: Wie kann ich Edittext.getText () im benutzerdefinierten AlertDialog abrufen?
  • Singleton mit Kontext in Android
  • Hamburger-Menü dreht sich auf Pfeil auf neue Aktivität
  • Ist es möglich, Android Beam zwischen einem Android-Gerät und einem anderen NFC-Gerät zu verwenden?
  • GetIntent () Extras immer NULL
  • 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)); } 

  • Android aus Speicher Prävention
  • Android title wird nicht in der Symbolleiste angezeigt
  • Wie zu vermeiden, weiche Tastatur drückt mein Layout?
  • HTTP-Anfragen von WebView abhören und überschreiben
  • Synchronisieren von Zeitstempeln über mehrere Geräte hinweg
  • IllegalStateException-Kartengröße sollte nicht 0 sein
  • 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.