1. 程式人生 > >安卓頁面跳轉使用Context.startActivity注意事項

安卓頁面跳轉使用Context.startActivity注意事項

因是:

  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(); } }