Frage

Ich versuche, meine IntentService haben einen Toast Meldung, aber wenn es von der onHandleIntent Nachricht senden, der Toast zeigt aber klemmt und den Bildschirm und nie Endivie. Ich vermute, seine weil die onHandleIntent Methode auf dem Hauptdienstthread nicht geschieht, aber wie kann ich es bewegen?

Hat jemand dieses Problem hat und es gelöst?

War es hilfreich?

Lösung

in onCreate() initialize ein Handler und dann schreiben, um es von dem Thread.

private class DisplayToast implements Runnable{
  String mText;

  public DisplayToast(String text){
    mText = text;
  }

  public void run(){
     Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show();
  }
}
protected void onHandleIntent(Intent intent){
    ...
  mHandler.post(new DisplayToast("did something")); 
}

Andere Tipps

Hier ist die vollständige IntentService Klasse Code demonstriert Toasts, die mir geholfen haben:

package mypackage;

import android.app.IntentService;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;

public class MyService extends IntentService {
    public MyService() { super("MyService"); }

    public void showToast(String message) {
        final String msg = message;
        new Handler(Looper.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        showToast("MyService is handling intent.");
    }
}

Mit dem Griff ein Runnable, welchem ??Inhalt der Operation schreiben

protected void onHandleIntent(Intent intent){
    Handler handler=new Handler(Looper.getMainLooper());
    handler.post(new Runnable(){
    public void run(){ 
        //your operation...
        Toast.makeText(getApplicationContext(), "hello world", Toast.LENGTH_SHORT).show();
    }  
}); 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top