Android:看看Google工程师的手误

我们启动Activity,都会用到IntentIntent需要传入Context参数,通常我们在Activity中使用Intent时,都会传入Activity的实例作为Context。但由于考虑到内存泄漏的风险以及在非Acitivty中启动Activity(比如Service中),大都提倡使用ApplicationContext,所以很多同学就把Activity类型的Context换成了ApplicationContext,这时就发现,突然不能正常启动Activity了,并且收到如下的错误。

Calling startActivity() from outside of an Activity  
context requires the FLAG_ACTIVITY_NEW_TASK flag. 
Is this really what you want?

意思就是,启动外部的Activity,需要FLAG_ACTIVITY_NEW_TASK标识。

但是,又有很多同学说,我这里不加这个标识,不会报错,可以正常运行。

说的都对,关键问题是Google的安卓工程师出了错误,在7.0(Android N)之前,不加这个标识是不行的。

getApplicationContext().startActivity执行的是ContextWrapper的方法。

猜你喜欢

转载自blog.csdn.net/bdmh/article/details/104654301