作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以大部分问题都在标题中。
我已经在 GCMIntentService 中设置了所有内容,以便在一个函数中执行 sendbroadcast(intent)。但是当我尝试在另一个中执行此操作时,我收到此错误“向死线程上的处理程序发送消息”。代码是完全一样的,对一个人来说是完美的,对另一个人来说是完美的,有什么想法吗?
@Override
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message");
final String message = intent.getExtras().getString("clicked");
if(message == null)
Toast.makeText(context, getResources().getString(R.string.message_null), Toast.LENGTH_SHORT).show();
else if(message.split("\\|")[0].equals("updateMessageInvisible")) {
onReceiveUpdateMessageInvisible(message);
} else if(message.split("\\|")[0].equals("message")) {
onReceiveMessage(message);
}
}
这个很好用。
private void onReceiveMessage(String message) {
//Stuff happening (accessing database mostly)
//Notify listView of Message that it has new data
Intent i = new Intent("com.crisis.app.NEW_MESSAGE");
sendBroadcast(i);
}
这个不行。
private void onReceiveUpdateMessageInvisible(String message) {
//Stuff happening (accessing database again)
//Notify listView of Message that data has been updated
Intent i = new Intent("com.crisis.app.UPDATE_MESSAGE");
sendBroadcast(i);
}
我的广播接收器类:
public final class ReceiveMessage extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("NOTIFY DATA CHANGED");
//Stuff happening
//Set adapter with array of message
adapter = new MessageRowAdapter(context, values);
listview.setAdapter(adapter);
}
}
我当然是在onPause和onResume中注册和注销
因此,如果有人知道为什么它在一种情况下有效,而在没有区别的情况下在另一种情况下却无效...
也许是关于您只能在一个 Intent 中执行一个 senBroadcast?
提前致谢!
已编辑:添加GCMIntentService的onMessage函数
最佳答案
解决了我的问题。
这是因为我在 UIThread 之外调用 Toast。Asynctask 没有解决它,你必须使用:
new Thread() {
public void run() {
mainActivity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(context, getResources().getString(R.string.message_null), Toast.LENGTH_SHORT).show();
}
});
}
}.start();
关于android - GCMIntentService 抛出 "Sending message to a Handler on a dead thread"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500034/
我是一名优秀的程序员,十分优秀!