在Android上进行SMS_RECEIVED工作的最佳方式是什么?
问题描述:
我有一个使用BroadcastReceiver处理传入SMS消息的工作应用程序。我的问题是,在接收短信时做什么是最好的方式?目前我正在启动一个新线程来完成这项工作,如下面的BroadcastReceiver的onReceive()方法所示。在Android上进行SMS_RECEIVED工作的最佳方式是什么?
@Override
public void onReceive(final Context ctx, Intent intent) {
if(intent.getAction().equals(ANDROID_SMS_DELIVER)) {
Bundle bundle = intent.getExtras();
if (bundle != null){
try{
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[pdus.length];
for(int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
final String smsFrom = msgs[i].getOriginatingAddress();
final String smsBody = msgs[i].getMessageBody();
// Launch a thread to do work on the SMS
new Thread() {
public void run() {
// Work..
}
}.start();
}
} catch(Exception e){}
}
}
}
这是最好的方法吗?或者,我是否应该将广播发送给其他IntentService来完成这项工作,或者这样做是否也会工作?
谢谢。
BroadcastReceiver只会活x秒(我以为10),我不知道线程会发生什么。你可以轻松地尝试它,如果它的工作。但如果这是我的电话,我会使用IntentService:更清晰和定义的行为 – RvdK