android Activity重用机制

原来很怀疑通过startActivityForResult启动两个Activity,在onActivityResult中会不会得到不同的结果,经测试,得到的是不同的结果,看来android对Activity的重用做了很多机制,只是我们不知道而已。

OnActivityResult.java :用来执行两个startActivityForResult的方法。

public class OnActivityResult extends Activity {
    /** Called when the activity is first created. */
	
	private Button mActivityButton1;
	private Button mActivityButton2;
	
	private TextView mResultView;
	
	public static final int REQUEST_ACTIVITY1 = 1;
	public static final int REQUEST_ACTIVITY2 = 2;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mActivityButton1 = (Button)findViewById(R.id.startActivity1);
        mActivityButton2 = (Button)findViewById(R.id.startActivity2);
        
        mResultView = (TextView)findViewById(R.id.result);
        
        mActivityButton1.setOnClickListener(new ActivityButton1ClickListener());
        mActivityButton2.setOnClickListener(new ActivityButton2ClickListener());
    }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    	
    	if(resultCode == RESULT_OK){
    		switch(requestCode){
    		case REQUEST_ACTIVITY1:
    			mResultView.setText("REQUEST_ACTIVITY1");
    			break;
    		case REQUEST_ACTIVITY2:
    			mResultView.setText("REQUEST_ACTIVITY2");
    			break;
    		}
    	}
    }
    
    class ActivityButton1ClickListener implements OnClickListener{

		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent mIntent = new Intent();
			
			mIntent.setClass(OnActivityResult.this, PublicActivity.class);
			
			try{
				OnActivityResult.this.startActivityForResult(mIntent, REQUEST_ACTIVITY1);
			}
			catch(ActivityNotFoundException e){
				System.out.println("Exception = " + e.getMessage());
			}
		}
    	
    }
    
    class ActivityButton2ClickListener implements OnClickListener{

		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent mIntent = new Intent();
			
			mIntent.setClass(OnActivityResult.this, PublicActivity.class);
			
			try{
				OnActivityResult.this.startActivityForResult(mIntent, REQUEST_ACTIVITY2);
			}
			catch(ActivityNotFoundException e){
				System.out.println("Exception = " + e.getMessage());
			}
		}
    }
}

PublicActivity:公用的Activity


public class PublicActivity extends Activity {
	
	private Button mBackButton;
	
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.public_activity);
		
		mBackButton = (Button)findViewById(R.id.back_button);
		
		mBackButton.setOnClickListener(new OnBackButtonClickListener());
	}
	
	class OnBackButtonClickListener implements OnClickListener{

		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent = new Intent();
			Bundle bundle = new Bundle();
			
			bundle.putString("result", "PublicActivity");
			
			intent.putExtras(bundle);
			
			setResult(RESULT_OK, intent);
			
			finish();
		}
		
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值