Android四大组件——Activity(一)

一、Activity之间通信——Intent、Bundle意图传递

Intent intent = new Intent(A.this,B.class);
intent.putExtra(kay,value);
startActivity(intent);
Intent intent = new Intent(A.this,B.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
input.putExtras(bundle);
startActivity(intent);

1、回传数据 startActivityForResult(intent,requestCode)

两个页面之间传递,如 A页面 输入 2+3 ,B页面计算结果,并返回

private  void toActivity_B(){
        Intent intent = new Intent(Activity_A.this,Activity_B.class);
        intent.putExtra("a","2");
        intent.putExtra("b","3");
        startActivityForResult(intent,10086);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==10086 && resultCode == RESULT_OK) {
            int sum = data.getIntExtra("sum", 0);
            
        }
        
    }

B页面

private  void sum() {
       Intent intent =getIntent();
       int a =intent.getIntExtra("a",2);
       int b =intent.getIntExtra("b",3);
       Intent sum = new Intent();
       sum.putExtra("sum",(a+b));
       setResult(RESULT_OK,sum);
    }

2、两个Activity 之间跳转时必然会执行的是哪几个方法

Acitivity_A启动

05-09 22:15:40.777 839-839/? E/Activity_A: ------------->onCreate()
05-09 22:15:40.777 839-839/? E/Activity_A: ------------->onStart()
05-09 22:15:40.777 839-839/? E/Activity_A: ------------->onResume()

跳转到Activity_B

05-09 22:21:09.787 3883-3883/com.apacherio.jondy.workdemo E/Activity_A: ------------->onPause()
05-09 22:21:09.807 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onCreate()
05-09 22:21:09.807 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStart()
05-09 22:21:09.807 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onResume()
05-09 22:21:10.217 3883-3883/com.apacherio.jondy.workdemo E/Activity_A: ------------->onStop()

返回Acitivity_A

05-09 22:22:15.877 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onPause()
05-09 22:22:15.887 3883-3883/com.apacherio.jondy.workdemo E/Activity_A: ------------->onRestart()
05-09 22:22:15.887 3883-3883/com.apacherio.jondy.workdemo E/Activity_A: ------------->onStart()
05-09 22:22:15.887 3883-3883/com.apacherio.jondy.workdemo E/Activity_A: ------------->onResume()
05-09 22:22:16.177 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStop()
05-09 22:22:16.177 3883-3883/com.apacherio.jondy.workdemo E/Activity_B: ------------->onDestroy()

那么问题来了,是不是跳转到Activity_B时,Acitivity_A都会调onStop()呢?

(1)、透明背景Activity_B

android:theme="@android:style/Theme.Translucent"
或者
android:theme="@android:style/Theme.Translucent.NoTitleBar"

05-09 22:29:50.587 7669-7669/com.apacherio.jondy.workdemo E/Activity_A: ------------->onPause()
05-09 22:29:50.607 7669-7669/com.apacherio.jondy.workdemo E/Activity_B: ------------->onCreate()
05-09 22:29:50.607 7669-7669/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStart()
05-09 22:29:50.617 7669-7669/com.apacherio.jondy.workdemo E/Activity_B: ------------->onResume()

(2)、对话框Dialog形式Activity_B

android:theme="@android:style/Theme.Dialog"
05-09 22:33:20.297 9139-9139/com.apacherio.jondy.workdemo E/Activity_A: ------------->onPause()
05-09 22:33:20.317 9139-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onCreate()
05-09 22:33:20.327 9139-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStart()
05-09 22:33:20.327 9139-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onResume()

上述结果的原因是:只有在不可见时,才会调用onStop(),借个图说明下

参考链接

https://blog.csdn.net/hanhan1016/article/details/47977489



三、在对话框Dialog形式Activity_B时,按Home键后,生命周期是什么样的呢?

05-09 22:52:10.597 9139-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onPause()
05-09 22:52:10.597 9139-9139/com.apacherio.jondy.workdemo E/Activity_A: ------------->onStop()
05-09 22:52:10.617 9139-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStop()
全部都不可以见!!!

源码地址:https://download.csdn.net/download/jondylove/10404210

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值