当我从BroadCastReceiver开始活动时,异常“从活动上下文外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK ”。以下是我的接收者代码
public class LogoutReceiver extends BroadcastReceiver {
public static final String LOGOUT_ACTION = "com.ss.ee.logout";
private Logger logger = new Logger(LogoutReceiver.class.getSimpleName(), true);
@Override
public void onReceive(Context context, Intent intent) {
Intent logoutIntent = new Intent(context, LoginActivity.class);
logoutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK );
//logoutIntent.putExtra("logout", true);
context.startActivity(intent);
}
}
你可以看到它,我已经设置了 FLAG_ACTIVITY_NEW_TASK 。 我想指出另一件事。我从工作线程中的HTTP请求发送broadcastreceiver。代码最像这样:
Handler mDelivery = new Handler(Looper.getMainLooper());
mDelivery.post(new Runnable() {
@Override
public void run() {
MyAppApplication.getInstance().sendBroadcast(new Intent(LogoutReceiver.LOGOUT_ACTION));
}
});
有人遇到问题吗?任何帮助都很棒。
答案 0 :(得分:1)
我很抱歉这个问题。我的错误导致了这个问题。请看一下问题所在。
@Override
public void onReceive(Context context, Intent intent) {
Intent logoutIntent = new Intent(context, LoginActivity.class);
logoutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK );
//logoutIntent.putExtra("logout", true);
context.startActivity(intent);//Here should be logoutIntent
}
对不起。