0

Я пытаюсь настроить Push-уведомления с помощью GCM на платформе Android.Push-уведомления в android: невозможно вызвать Toast из GCMIntentService

Когда я делаю это в GCMIntentService:

@Override 
protected void onMessage(Context context, Intent intent) { 
    Toast.makeText(context,intent.getStringExtra("message"), Toast.LENGTH_LONG).show(); 
} 

Я получаю следующее сообщение об ошибке: sending message to a Handler on a dead pool

Но когда я запускаю ту же линию в любом месте в пределах моего главного Намерения, он работает просто отлично.

Я попытался добавить исправление, найденное в Google, добавив «Class.forName (« android.os.AsyncTask »); к моему методу onCreate внутри основного намерения. Но это не помогает.

Возможно ли разгрузить сообщение от GCMIntentService на мое основное мероприятие и просто вызвать там тост?

ответ

0

Как насчет изменения контекста на Toast.makeText(context, ...) до getApplicationContext()?

+0

Это не помогло. Однако использование уведомлений о статусе вместо Toast сделало трюк. – TheOne

+0

Да, но это совершенно другой стиль уведомления. Вы только хотите использовать уведомления о состоянии вне приложения. –

2

U должен использовать для этого обработчик. Код выглядит следующим образом:

private void handleMessage(Intent intent) 
{ 
    final String message = intent.getExtras().getString("message"); 

    Thread t = new Thread() 
    { 

     public void run() 
     { 

      Message myMessage = new Message(); 
      Bundle resBundle = new Bundle(); 
      resBundle.putString("message", message); 
      myMessage.setData(resBundle); 
      handler.sendMessage(myMessage); 
     } 
    }; 
    t.start(); 
} 

private Handler handler = new Handler() 
{ 

     public void handleMessage(Message msg) 
      { 

      Toast.makeText(getBaseContext(), msg.getData().getString("message"), Toast.LENGTH_LONG).show(); 
      } 
}; 

Этот код должен быть реализован в службе GCM, которая обрабатывает сообщение.