Android应用开发之Android四大组件之组件Activity解析
凌雪 2018-10-24 来源 :网络 阅读 1159 评论 0

摘要:本文将带你了解Android应用开发之Android四大组件之组件Activity解析,希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发之Android四大组件之组件Activity解析,希望本文对大家学Android有所帮助。


一、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
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"
 
-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/Ac<p>一、Activity之间通信——Intent、Bundle意图传递</p><pre   class="brush:java;">Intent intent = new Intent(A.this,B.class);intent.putExtra(kay,value);startActivity(intent);</pre><pre   class="brush:java;">Intent intent = new   Intent(A.this,B.class);Bundle bundle = new   Bundle();bundle.putString(key,value);input.putExtras(bundle);startActivity(intent);</pre><p>1、回传数据?startActivityForResult(intent,requestCode)</p><p>两个页面之间传递,如 A页面 输入 2+3 ,B页面计算结果,并返回</p><pre   class="brush:java;">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);                     }             }</pre><p>B页面</p><pre   class="brush:java;">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);    }</pre><p>2、两个Activity 之间跳转时必然会执行的是哪几个方法</p><p>Acitivity_A启动</p><pre   class="brush:java;">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()</pre><p>跳转到Activity_B</p><pre   class="brush:java;">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()</pre><p>返回Acitivity_A</p><pre   class="brush:java;">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()</pre><p><strong>那么问题来了,是不是跳转到Activity_B时,Acitivity_A都会调onStop()呢?</strong></p><p>(1)、透明背景Activity_B</p> <pre   class="brush:java;"></pre><pre   class="brush:java;">android:theme="@android:style/Theme.Translucent"</pre><pre   class="brush:java;">或者</pre><pre   class="brush:java;">android:theme="@android:style/Theme.Translucent.NoTitleBar"</pre> <pre   class="brush:java;">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()</pre><br><p>(2)、对话框Dialog形式Activity_B</p><pre   class="brush:java;">android:theme="@android:style/Theme.Dialog"</pre><pre   class="brush:java;">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()</pre><p>上述结果的原因是:只有在不可见时,才会调用onStop(),借个图说明下</p><p><img   style="height: 560px; width: 437.627px;" alt="\"   src="https://www.2cto.com/uploadfile/Collfiles/20180510/20180510092616711.png"></p> <p>三、在对话框Dialog形式Activity_B时,按Home键后,生命周期是什么样的呢?</p><pre class="brush:java;">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()</pre>tivity_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(),借个图说明下
   
     
三、在对话框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   9-9139/com.apacherio.jondy.workdemo E/Activity_B: ------------->onStop()    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved