基础之Intent向下,向上一个活动个传递数据

向下传数据
aActivity

String data = "Hello  bActivity";
Intent intent = new Intent(aActivity.this, bActivity.class);
intent.putExtra("adata", data);
startActivity(intent);
bActivity中可直接得到intent,神奇,说对key就给你值了  从intent中getkey类型的Extra就返回a存的数据了

Intent intent = getIntent();
String adata = intent.getStringExtra("adata");
Toast.makeText(this,adata,Toast.LENGTH_SHORT).show();

向上传数据

a中

Intent intent = new Intent(aActivity.this, bActivity.class);
startActivityForResult(intent,1);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode){
        case 1:
            if(resultCode == RESULT_OK) {
                String data_b = data.getStringExtra("data_b");
                Toast.makeText(this,data_b,Toast.LENGTH_SHORT).show();
            }
            break;
    }
}

 findViewById(R.id.btn_b).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("data_b", "Hello a");
            setResult(RESULT_OK, intent);
            finish();
        }
    });
}

@Override
public void onBackPressed() {//按下返回键达到同样的效果
    Intent intent = new Intent();
    intent.putExtra("data_b", "Hello a");
    setResult(RESULT_OK, intent);
    finish();
}



-----------------------------------------------------------------

如果传递数据量大的话,可以把数据都放在一个类中
public class Person implements Serializable{
private int age;
private String name;
private String adress;
public Person(int age,String name,String adress){
this.name=name;
this.adress=adress;
this.age=age;
}
public String toString(){ //重写toString方法
return "[name="+name+"age+"+age+"adress+"+adress+" ]"

}
}
传入数据
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Person person=new Person(20,"xiaoming","beijing");
bundle.putSerializable("key",person);
intent.putExtras(bundle);
startActivity(intent);
接收数据
Intent intent=getIntent();
Person person=(Person)intent.getSerializableExtra("key");

---------------------------------------------------------------------------------------------------------

传递一个bitmap对象
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Bitmap bitmap=BitmapFactory.decodeResource(getResource(),R.drawable.ic_launcher);
bundle.putParcelable("key",bitmap);
intent.putExtra(bundle);
startActivity(intent);
接收bitmap 
Intent intent=getIntent();
Bitmap bitmap=intent.getParcelableExtra("key");
imageView.setImageBitmap(bitmap);



传递数据
传入
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key","stringValue");
intent,putExtra("key2",Int);
startActivity(intent);
取出
Intent intent =getIntent();
intent.getStringExtra("key");
intent.getIntExtra("key2",0);
通过Bundle传递数据
传入
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("key","stringValue");
bundle.putInt("key2",Int);
intent.putExtra(bundle);
startActivity(intent);
接收同上

-----------------------------------------------------------------------------------------------------------

bundle传递数据大于0.5M会抛出传输数据过大异常;
在传输大量数据的时候也有可能抛出TransactionTooLargeException异常,解决办法是减少bundle传输的数据量


task(任务)就是activities的序列集合
back stack(后台任务栈)对activities进行一系列的管理、打开、关闭


通过在Manifest中为activtiy注册信息时添加:process 即可分配不同的进程名;
使用activity的getTaskId()方法可以获得当前应用程序的taskId,同一个应用程序下的不同activity默认情况下的taskId都是相同的;


通过在DOS控制台中输入adb shell dumpsys activity命令查看activity的运行情况:
Running activities下就是当前活动的Activity
Recent tasks下是模拟器上曾经运行过的程序,显示为程序程序包的名称

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值