向下传数据
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(); }
-----------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
传递一个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下是模拟器上曾经运行过的程序,显示为程序程序包的名称