有关Activity的一点笔记

1. startActivity的工作过程

调用startActivity之后会传递到操作系统的ActivityManager中去,之后
ActivityManager会启动另一个activity。

2. 启动活动与传递数据

  • 用startActivityForResult启动的Activity要用finishActivity(int requestCode)函数去销毁

  • startActivityForResult的用法

    • 调用startActivityForResult(Intent intent,int requestCoed),其中Intent是启动第二个activity的意图,requestCoed是用来在onActivityResult()回调中区分是什么时候启动,以及启动的是哪个Activity的。
    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
    startActivityForResult(intent,1);
    
    • 被启动的Activity可以调用setResult(int resultCode,Intent data)方法给启动它的Activity返回数据(包裹在Intent中)
    Intent intent = new Intent();
    intent.putExtra("data_return","Hello MainActivity");
    setResult(RESULT_OK,intent);
    
    • 启动Activity实现onActivityResult()回调,获取数据
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          switch (requestCode){
              case 1:
                  if(resultCode == RESULT_OK){
                      Log.i(TAG, "onActivityResult: result:"+data.getStringExtra("data_return"));
                  }
          }
      }
    
  • 被启动的Activity获取启动它的Activity传来的数据,只需要调用getIntent()方法获取到启动自己用到的Intent,然后调用Intent的getXXX()方法获取即可。

  • Bundle是什么?

Bundle是用来存储数据的一种集合,采用键值对的形式,通常用在Intent传递数据过程中,存储数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,508评论 0 17
  • 一、继承结构 java.lang.object-->android.content.Context-->and...
    supory阅读 1,438评论 1 3
  • (1)闹钟 创建闹钟(ACTION_SET_ALARM)示例Intent: 注:为了调用ACTION_SET_AL...
    sunnygarden阅读 1,664评论 0 10
  • 【 Android四大组件之一 主要用于与用户进行交互,在一个App中可能存在零个或多个Activity 】 1....
    征程_Journey阅读 1,971评论 0 4
  • 大家好,我是272号星宝宝,我正在参加第七期蜕变之旅行动,这是我的第三篇日记。 昨天带孩子们去迪士尼玩,我们出发的...
    艺坊园阅读 260评论 1 1