1、Intent封裝
- public class IntentHelper {
- private Intent intent;
- private static IntentHelper intentHelper;
- private IntentHelper(){
- intent = new Intent();
- }
- public static IntentHelper getInstance(){
- if(intentHelper == null){
- intentHelper = new IntentHelper();
- }
- return intentHelper;
- }
- public Intent getIntent(Context packageContext, Class<?> cls){
- intent.setClass(packageContext, cls);
- return intent;
- }
- public Intent getIntentClearPreActivity(Context packageContext, Class<?> cls){
- Intent intent = new Intent();
- intent.setClass(packageContext, cls);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- return intent;
- }
- public Intent getNewIntent(Context packageContext, Class<?> cls){
- Intent intentNew = new Intent();
- intentNew.setClass(packageContext, cls);
- return intentNew;
- }
- }
2、Activity的兩種啓動模式:
- FLAG.ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_REORDER_TO_FRONT
如果已經啓動了四個Activity:A,B,C,D 在D Activity裏,我們要跳轉到B Activity,同時希望C finish掉,可以在startActivity(intent)裏的intent裏添加flags標記
- Intent intent = new Intent(this, B.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
這樣啓動B Activity,就會把D,C都finished掉,如果你的B Activity的啓動模式是默認的(multiple),則B Activity會finished掉,再啓動一個新的Activity B。如果不想重新再創建一個新的B Activity,則在上面的代碼裏再加上
- intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
3、bundle傳值
- Intent intent = new Intent();
- Bundle bundle = new Bundle();
- bundle.putString("Tag", "mapView");
- intent.setClass(A.this, B.class);
- intent.putExtras(bundle);
- startActivity(intent);
- bundle = this.getIntent().getExtras();
- bundle.getString("Tag");