UPDATE: Non sono d'accordo che si tratta di un duplicato - perché sto cercando un modo per uscire dall'app principale e mostrare ancora un Toast dal servizio.Come visualizzare Toast da un servizio al termine dell'attività principale?
In a very simple test app Ho 2 pulsanti:
Cliccando qualsiasi dei pulsanti verrà eseguito un servizio con una stringa azione corrispondente ("aperto" o "flash") -
public class OpenActivity extends Activity {
private Intent mServiceIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open);
mServiceIntent = new Intent(this, RegionService.class);
}
public void openCar(View v) {
mServiceIntent.setAction("open");
startService(mServiceIntent);
}
public class RegionService extends IntentService {
private static final String TAG = "RegionService";
@Override
protected void onHandleIntent(Intent intent) {
Log.d(TAG, "Received an intent: " + intent);
String action = intent.getAction();
Log.d(TAG, "Received an action: " + action);
if(action.equals("open")) {
Toast.makeText(this,
getString(R.string.car_opened),
Toast.LENGTH_SHORT).show();
}
Purtroppo la mia applicazione si blocca con:
D/RegionService(24506): Received an intent: Intent { act=open cmp=de.afarber.mynotification/.RegionService }
D/RegionService(24506): Received an action: open
W/MessageQueue(24506): Handler (android.os.Handler) {422768a8} sending message to a Handler on a dead thread
W/MessageQueue(24506): java.lang.RuntimeException: Handler (android.os.Handler) {422768a8} sending message to a Handler on a dead thread
W/MessageQueue(24506): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:320)
W/MessageQueue(24506): at android.os.Handler.enqueueMessage(Handler.java:626)
W/MessageQueue(24506): at android.os.Handler.sendMessageAtTime(Handler.java:595)
W/MessageQueue(24506): at android.os.Handler.sendMessageDelayed(Handler.java:566)
W/MessageQueue(24506): at android.os.Handler.post(Handler.java:326)
W/MessageQueue(24506): at android.widget.Toast$TN.hide(Toast.java:370)
W/MessageQueue(24506): at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:54)
W/MessageQueue(24506): at android.os.Binder.execTransact(Binder.java:412)
W/MessageQueue(24506): at dalvik.system.NativeStart.run(Native Method)
Essendo un novizio di programmazione Android Mi chiedo Come visualizzare un Toast da servizio in modo corretto?
Penso di aver già visto Toasts in Android Home (cioè non c'erano attività sullo schermo del dispositivo e c'erano ancora Toasts).
Il mio background: Vorrei monitorare un dispositivo faro dal mio servizio e mostrare alcuni testo Brindisi - anche quando la mia applicazione è stata chiusa.
http://www.jjoe64.com/2011/09/ show-toast-notification-from-service.html – Suvitruf
possibile duplicato di [Toast creato in un IntentService non scompare mai] (http://stackoverflow.com/questions/3296639/toast-created-in-an-intentservice-never- va via) –
Non sono d'accordo che questo è un duplicato - perché nel mio caso mi piacerebbe uscire dall'app principale e mostrare ancora un Toast dal servizio. –