安卓页面跳转使用Context.startActivity注意事项

来源:互联网 发布:git ignore linux 编辑:程序博客网 时间:2024/05/17 00:51
因是:

  Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

修改后代码如下:

Intent intent = new Intent();intent.setClass(mContext, PhotoView.class);Bundle bundle = new Bundle();intent.putExtras(bundle);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  mContext.startActivity(intent);


参考文章:http://www.cnblogs.com/shaweng/archive/2012/06/29/2570394.html

这个是我写在Util工具类的一个方法,用于SetttingActivity extends BaseActivity这个页面调用的,我在基类里面重新写了startActivity方法

1.如果我给context传递的对象是SetttingActivity.this 这个对象,实际上调用的就是SettingActivity的startActivity的方法,也就是到它的基类里面的startActivity方法(已经验证)

2.如果我给conetxt传递的对象是app Conetxt 全局对象,实际上也并不是一个SettingActivity对象了,那么它就调用不到它的基类里面的startActivity方法了(已经验证)


public  static  void  startAboutActivity(Context context){    Intent intent3 = new Intent(context, AboutActivity.class); try {     intent3.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     context.startActivity(intent3); }catch (Exception e){     e.printStackTrace(); }}

1 0
原创粉丝点击