java 线程 handler,java.lang.RuntimeException:处理程序(android.os.Handler)在死线程上向处理程序发送消息...

在我的应用程序中,我使用IntentService发送短信。

@Override

protected void onHandleIntent(Intent intent) {

Bundle data = intent.getExtras();

String[] recipients = null;

String message = getString(R.string.unknown_event);

String name = getString(R.string.app_name);

if (data != null && data.containsKey(Constants.Services.RECIPIENTS)) {

recipients = data.getStringArray(Constants.Services.RECIPIENTS);

name = data.getString(Constants.Services.NAME);

message = data.getString(Constants.Services.MESSAGE);

for (int i = 0; i < recipients.length; i++) {

if(!StringUtils.isNullOrEmpty(recipients[i])) {

try {

Intent sendIntent = new Intent(this, SMSReceiver.class);

sendIntent.setAction(Constants.SMS.SEND_ACTION);

PendingIntent sendPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, sendIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Intent deliveryIntent = new Intent(this, SMSReceiver.class);

deliveryIntent.setAction(Constants.SMS.DELIVERED_ACTION);

PendingIntent deliveryPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, deliveryIntent, PendingIntent.FLAG_UPDATE_CURRENT);

SmsManager.getDefault().sendTextMessage(recipients[i].trim(), null, "[" + name + "] " + message, sendPendingIntent, deliveryPendingIntent);

} catch (Exception e) {

Log.e(TAG, "sendTextMessage", e);

e.printStackTrace();

Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();

MainActivity.instance.writeToLogFile(e.getMessage(), System.currentTimeMillis());

}

}

}

}

}

在运行应用程序时,出现以下错误:

W/MessageQueue(7180): Handler (android.os.Handler) {42586468} sending message to a Handler on a dead thread

W/MessageQueue(7180): java.lang.RuntimeException: Handler (android.os.Handler) {42586468} sending message to a Handler on a dead thread

W/MessageQueue(7180): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:294)

W/MessageQueue(7180): at android.os.Handler.enqueueMessage(Handler.java:618)

W/MessageQueue(7180): at android.os.Handler.sendMessageAtTime(Handler.java:587)

W/MessageQueue(7180): at android.os.Handler.sendMessageDelayed(Handler.java:558)

W/MessageQueue(7180): at android.os.Handler.post(Handler.java:323)

W/MessageQueue(7180): at android.widget.Toast$TN.hide(Toast.java:367)

W/MessageQueue(7180): at android.app.ITransientNotification$Stub.onTransact(ITransientNotification.java:55)

W/MessageQueue(7180): at android.os.Binder.execTransact(Binder.java:351)

W/MessageQueue(7180): at dalvik.system.NativeStart.run(Native Method)

我的SMSReceiver位于另一个类中。我该如何解决这个问题?谢谢;没错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值