已经设置“从Activity上下文外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK”

时间:2016-05-03 07:54:58

标签: android android-intent

当我从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));
            }
        });

有人遇到问题吗?任何帮助都很棒。

1 个答案:

答案 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 
}

对不起。