Cómo crear tostadas de IntentService? Se queda atascado en la pantalla
-
08-10-2019 - |
Pregunta
Estoy tratando de tener mi IntentService mostrar un mensaje de aviso emergente, pero cuando se envía el mensaje de onHandleIntent, los espectáculos tostadas, pero se queda atascado y la pantalla y nunca de hojas. Supongo que es porque el método onHandleIntent no sucede en el hilo principal de servicio, pero ¿cómo puedo moverlo?
¿Alguien tiene este problema y lo resolvió?
Solución
y
en onCreate()
inicializar un Handler
luego puesto a él desde su hilo.
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"));
}
Otros consejos
Este es el código completo IntentService Clase demostrando tostadas que me ayudaron:
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.");
}
}
Utilice la palanca para enviar un Ejecutable la que el contenido de su operación
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();
}
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow