当前位置: 代码迷 >> Android >> 在BroadcastReceiver种中启动Activity,有时能进入到所启动的Activity类中,有时进入不了
  详细解决方案

在BroadcastReceiver种中启动Activity,有时能进入到所启动的Activity类中,有时进入不了

热度:95   发布时间:2016-05-01 18:01:30.0
在BroadcastReceiver类中启动Activity,有时能进入到所启动的Activity类中,有时进入不了
public class SmsReciver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

public String newmessage;//static 

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdus.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for(SmsMessage message : messages) {
newmessage = message.getMessageBody();
Intent newIntent = new Intent(context,AirFluxActivity.class);
// 在Service中启动Activity,必须设置如下标志
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);  
}
}
}
}
}

------解决方案--------------------
onReceive 里面做太多的事了,BroadcastReceiver大约10S就会被销毁,不管事情有没有完成。
------解决方案--------------------
请不要在广播里面处理界面元素的东西,因为一个广播的发出到结束可能会在10秒钟左右就会消失,但一个activity界面启动的时间可能会短也可能会长,所以就倒制您所说的有时候能启 有时候不能启。
解决的办法就是在广播里面向handler发送一个消息,在handler里面去打开一个界面。

------解决方案--------------------
探讨
请不要在广播里面处理界面元素的东西,因为一个广播的发出到结束可能会在10秒钟左右就会消失,但一个activity界面启动的时间可能会短也可能会长,所以就倒制您所说的有时候能启 有时候不能启。
解决的办法就是在广播里面向handler发送一个消息,在handler里面去打开一个界面。
  相关解决方案