Way*_*int 8 android toast android-c2dm
我正在使用C2DM服务,当我收到消息时,我也会收到错误"将消息发送到死线程上的处理程序",同时显示Toast消息,我希望看到消息到达.使用代码:
@Override
protected void onMessage(Context context, Intent intent) {
Log.e("C2DM", "Message: arived");
Bundle extras = intent.getExtras();
if (extras != null) {
//Toast.makeText(this.getApplicationContext(), (CharSequence) extras.get("payload"), Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
onMessage方法用于扩展的类中C2DMBaseReceiver.Toast messatge永远不会显示.
这里的错误是什么?有什么灵魂吗?
编辑:
09-06 08:59:02.135: WARN/MessageQueue(5654): Handler{44e65658} sending message to a Handler on a dead thread
09-06 08:59:02.135: WARN/MessageQueue(5654): java.lang.RuntimeException: Handler{44e65658} sending message to a Handler on a dead thread
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:179)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Handler.sendMessageAtTime(Handler.java:457)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Handler.sendMessageDelayed(Handler.java:430)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Handler.post(Handler.java:248)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.widget.Toast$TN.hide(Toast.java:344)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Binder.execTransact(Binder.java:288)
09-06 08:59:02.135: WARN/MessageQueue(5654): at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)
有一个解决方法.但是,我无法使用该解决方法.
我通过在C2DMBaseReceiver构造函数中创建一个Handler 并添加了一个显示Toast的Runnable来解决类似的问题.
像这样的东西:
public void showToast(String message, Context context){
handler.post(new DisplayToast(message, context));
}
private class DisplayToast implements Runnable{
String mText;
Context mContext;
public DisplayToast(String text, Context context){
mText = text;
mContext = context;
}
public void run(){
Toast.makeText(mContext, mText, Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以从子类中调用DisplayToast方法.
希望它有效!
| 归档时间: |
|
| 查看次数: |
9555 次 |
| 最近记录: |