凌雪
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号