Context中使用startActivity报require new task错误

今天在写Android代码的时候,把别人的代码拷贝过来运行,Android Studio报错,这个类在同学那里执行没有任何问题,但是不知道为什么到了我这里执行就会报错,我用百度进行搜索,很容易就找到了解决方案。

报错内容如下:

Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?


报错的语句为:
1
context.startActivity(intent);


经过查找其他网友给出的问题原因是:
> Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。
解决方案为在源代码之前加入语句:

1
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


但是这样子仍然会导致acticity的history乱套,并且在关闭应用时需要做更多的工作。
所以推荐使用下面的解决方法进行解决:
1
2
Intent intent = new Intent(OOXXActivity.this, ImageSwitcherActivity.class);              
OOXXActivity.this.startActivity(intent);


本文作者:Qiu Qingyu
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!
本文永久链接:http://qiuqingyu.cn/2017/03/17/Context中使用startActivity报require-new-task错误/