Activity生命周期会表现出哪几种状态?(activity生命周期)
你们好,最近小时发现有诸多的小伙伴们对于Activity生命周期会表现出哪几种状态?,activity生命周期这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 打开Android Studio,新建一个空活动,如下图所示。
2、 在MainActivity中添加每个函数,并相应地添加打印信息,以便观察函数生命周期中的调用。
3、 函数包括onCreate(),onRestart(),onStart(),onResume(),onPause(),onStop(),onDestroy(),具体如下图
4、 主活动脚本如下:
5、 package com.example.xan.activitylifetest;
6、 import android.content.Intent;
7、 import android.support.v7.app.AppCompatActivity;
8、 import android.os.Bundle;
9、 import android.util.Log;
10、 import android.view.MotionEvent;
11、 import android.widget.Toast;
12、 public class MainActivity extends AppCompatActivity {
13、 @Override
14、 protected void onCreate(Bundle savedInstanceState) {
15、 super.onCreate(savedInstanceState);
16、 setContentView(R.layout.activity_main);
17、 System.out.println('=====MainActivity.onCreate');
18、 }
19、 @Override
20、 protected void onRestart() {
21、 super.onRestart();
22、 System.out.println('=====MainActivity.onRestart');
23、 }
24、 @Override
25、 protected void onStart() {
26、 super.onStart();
27、 System.out.println('=====MainActivity.onStart');
28、 }
29、 @Override
30、 protected void onResume() {
31、 super.onResume();
32、 System.out.println('=====MainActivity.onResume');
33、 }
34、 @Override
35、 protected void onPause() {
36、 super.onPause();
37、 System.out.println('=====MainActivity.onPause');
38、 }
39、 @Override
40、 protected void onStop() {
41、 super.onStop();
42、 System.out.println('=====MainActivity.onStop');
43、 }
44、 @Override
45、 protected void onDestroy() {
46、 super.onDestroy();
47、 System.out.println('=====MainActivity.onDestroy');
48、 }
49、 }
50、 此时可以连接设备,或者使用虚拟设备编译测试,在机器上运行效果如下图所示。
51、 在Android Studio的Logcat打印中,增加了一个System.out过滤器,方便查看各个功能界面的打印信息,如下图所示。
52、 此时MainActivity中函数的打印信息就是MainActivity创建时生命周期中的打印顺序,即onCreate - onStart() - onResume(),如下图所示。
53、 为onPause() - onStop - onDestroy(),所以单个活动的整个生命周期大概为:onCreate-onStart()-恢复时()-暂停时()-停止时-销毁时(),
54、 添加一个SecondActivity,代码和MainActivity类似,只是打印出来的信息有所区别,如下图所示。
55、 SecondActivity脚本的具体内容如下:
56、 package com.example.xan.activitylifetest;
57、 import android.support.v7.app.AppCompatActivity;
58、 import android.os.Bundle;
59、 public class SecondActivity extends AppCompatActivity {
60、 @Override
61、 protected void onCreate(Bundle savedInstanceState) {
62、 super.onCreate(savedInstanceState);
63、 setContentView(R.layout.activity_second);
64、 System.out.println('=====SecondActivity.onRestart');
65、 }
66、 @Override
67、 protected void onRestart() {
68、 super.onRestart();
69、 System.out.println('=====SecondActivity.onRestart');
70、 }
71、 @Override
72、 protected void onStart() {
73、 super.onStart();
74、 System.out.println('=====SecondActivity.onStart');
75、 }
76、 @Override
77、 protected void onResume() {
78、 super.onResume();
79、 System.out.println('=====SecondActivity.onResume');
80、 }
81、 @Override
82、 protected void onPause() {
83、 super.onPause();
84、 System.out.println('=====SecondActivity.onPause');
85、 }
86、 @Override
87、 protected void onStop() {
88、 super.onStop();
89、 System.out.println('=====SecondActivity.onStop');
90、 }
91、 @Override
92、 protected void onDestroy() {
93、 super.onDestroy();
94、 System.out.println('=====SecondActivity.onDestroy');
95、 }
96、 }
97、 在MainActivity函数中,添加一个触发事件,跳转到SecondActivity页面,如下图所示。
98、 主活动脚本如下:
99、 package com.example.xan.activitylifetest;
100、 import android.content.Intent;
101、 import android.support.v7.app.AppCompatActivity;
102、 import android.os.Bundle;
103、 import android.util.Log;
104、 import android.view.MotionEvent;
105、 import android.widget.Toast;
106、 public class MainActivity extends AppCompatActivity {
107、 @Override
108、 protected void onCreate(Bundle savedInstanceState) {
109、 super.onCreate(savedInstanceState);
110、 setContentView(R.layout.activity_main);
111、 System.out.println('=====MainActivity.onCreate');
112、 }
113、 @Override
114、 protected void onRestart() {
115、 super.onRestart();
116、 System.out.println('=====MainActivity.onRestart');
117、 }
118、 @Override
119、 protected void onStart() {
120、 super.onStart();
121、 System.out.println('=====MainActivity.onStart');
122、 }
123、 @Override
124、 protected void onResume() {
125、 super.onResume();
126、 System.out.println('=====MainActivity.onResume');
127、 }
128、 @Override
129、 protected void onPause() {
130、 super.onPause();
131、 System.out.println('=====MainActivity.onPause');
132、 }
133、 @Override
134、 protected void onStop() {
135、 super.onStop();
136、 System.out.println('=====MainActivity.onStop');
137、 }
138、 @Override
139、 protected void onDestroy() {
140、 super.onDestroy();
141、 System.out.println('=====MainActivity.onDestroy');
142、 }
143、 @Override
144、 public boolean onTouchEvent(MotionEvent event) {
145、 if (event.getAction()==MotionEvent.ACTION_DOWN){
146、 Intent intent=new Intent(MainActivity.this, SecondActivity.class);
147、 startActivity(intent);
148、 Toast.makeText(这个,跳转到第二项活动,干杯. LENGTH_SHORT)。show();
149、 return true;
150、 }
151、 return super.onTouchEvent(event);
152、 }
153、 }
154、 编译运行前,检查SecondActivity是否在AndroidManifest中注册,如果没有,则注册,如下图所示。
155、 AndroidManifest.xml具体内容如下:
156、 ?xml version='1.0' encoding='utf-8'?
157、 manifest xmlns:android='http://schemas.android.com/apk/res/android'
158、 package='com.example.xan.activitylifetest'
159、 application
160、 android:allowBackup='true'
161、 android:icon='@mipmap/ic_launcher'
162、 android:label='@string/app_name'
163、 android:roundIcon='@mipmap/ic_launcher_round'
164、 android:supportsRtl='true'
165、 android:theme='@style/AppTheme'
166、 activity android:name='.MainActivity'
167、 intent-filter
168、 action android:name='android.intent.action.MAIN' /
169、 category android:name='android.intent.category.LAUNCHER' /
170、 /intent-filter
171、 /activity
172、 activity android:name='.SecondActivity'
173、 /activity
174、 /application
175、 /manifest
176、 两个活动中函数在生命周期中的执行顺序为:主要活动。暂停()-第二个活动。onrestart()-第二个活动。onstart()-第二个活动。on resume()-主要活动。在stop()上,
177、 两个活动中函数在生命周期中的执行顺序为:第二个活动。暂停时()-主活动。onrestart()-主活动。onstart()-主活动。resume()-第二个活动。on stop()-第二个活动。on destroy();最后再按返回键,
178、 所以两个相互完全覆盖的Activity界面在整个生命周期中函数的执行总顺序为:MainActivity.onCreate --MainActivity.onStart() --MainActivity.onResume()--MainActivity.onPause() --SecondActivity.onRestart()--SecondActivity.onStart()--SecondActivity.onResume()--MainActivity.onStop()--SecondActivity.onPause()--MainActivity.onRestart()--MainActivity.onStart()--MainActivity.onResume()--SecondActivity.onStop()--SecondActivity.onDestroy()--MainActivity.onPause()--MainActivity.onStop()--MainActivity.onDestroy()
179、 在AndroidManifest 中给SecondActivity 添加主题样式为Dialog ,使得SecondActivity 的界面,不完全覆盖MainActivity 的界面,
180、 具体修改如下图
181、 AndroidManifest.xml 的具体内容如下:
182、 ?xml version='1.0' encoding='utf-8'?
183、 manifest xmlns:android='http://schemas.android.com/apk/res/android'
184、 package='com.example.xan.activitylifetest'
185、 application
186、 android:allowBackup='true'
187、 android:icon='@mipmap/ic_launcher'
188、 android:label='@string/app_name'
189、 android:roundIcon='@mipmap/ic_launcher_round'
190、 android:supportsRtl='true'
191、 android:theme='@style/AppTheme'
192、 activity android:name='.MainActivity'
193、 intent-filter
194、 action android:name='android.intent.action.MAIN' /
195、 category android:name='android.intent.category.LAUNCHER' /
196、 /intent-filter
197、 /activity
198、 activity android:name='.SecondActivity'
199、 android:theme='@style/Theme.AppCompat.Dialog'
200、
201、 /activity
202、 /application
203、 /manifest
204、 两个Activity中函数在生命周期中的执行顺序为:MainActivity.onPause()--SecondActivity.onRestart()--SecondActivity.onStart()--SecondActivity.onResume(),
205、 两个Activity中函数在生命周期中的执行顺序为:SecondActivity.onPause()--MainActivity.onResume()--SecondActivity.onStop()--SecondActivity.onDestroy(),
206、 所以两个相互不完全覆盖的Activity界面在整个生命周期中函数的执行总顺序为:MainActivity.onCreate --MainActivity.onStart() --MainActivity.onResume()--MainActivity.onPause() --SecondActivity.onRestart()--SecondActivity.onStart()--SecondActivity.onResume()--SecondActivity.onPause()--MainActivity.onResume()--SecondActivity.onStop()--SecondActivity.onDestroy()--MainActivity.onPause()--MainActivity.onStop()--MainActivity.onDestroy()
207、 综上所述,在Activity不同的使用情况中,函数的在生命周期中的执行情况,可能会有所不同,在不同使用中请注意
以上就是activity生命周期这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
宝子们,杭州 房子装修完成啦!这次要给大家分享几家设计超赞的装修公司哦。它们各具特色,从空间规划到风格...浏览全文>>
-
欲筑室者,先治其基。在上海,装修房子对于每个业主而言,都是极为关键的一步,然而,如何挑选一家值得信赖的...浏览全文>>
-
2025年以来,联通支付严格贯彻落实国家战略部署,以数字和科技为驱动,做好金融五篇大文章,履行支付为民社会...浏览全文>>
-
良工巧匠,方能筑就华居;精雕细琢,方可打造美家。当我们谈论装修公司时,选择一家靠谱可靠的公司是至关重要...浏览全文>>
-
在当今社会,随着城市化进程的高速推进,建筑垃圾的产生量与日俱增。据权威数据显示,我国每年建筑垃圾产生量超 ...浏览全文>>
-
家人们,在上海要装修,选对公司那可太重要了!古语有云:"安得广厦千万间,大庇天下寒士俱欢颜。"一个温馨的...浏览全文>>
-
近年来,新能源汽车市场发展迅猛,各大品牌纷纷推出各具特色的车型以满足消费者多样化的需求。作为国内新能源...浏览全文>>
-
近年来,随着汽车市场的不断变化和消费者需求的升级,安徽滁州地区的宝来2025新款车型在市场上引起了广泛关注...浏览全文>>
-
随着汽车市场的不断变化,滁州地区的消费者对高尔夫车型的关注度持续上升。作为大众品牌旗下的经典车型,高尔...浏览全文>>
-
在2023年,大众探影以其时尚的设计和出色的性能赢得了众多消费者的青睐。作为一款小型SUV,探影凭借其紧凑的车...浏览全文>>
- 安徽滁州途安L新车报价2022款,最低售价16.68万起,入手正当时
- 小鹏G7试驾,新手必知的详细步骤
- 别克GL8预约试驾,4S店的贴心服务与流程
- 安徽阜阳ID.4 CROZZ落地价全解,买车必看的省钱秘籍
- 淮北探岳多少钱 2025款落地价,最低售价17.69万起现在该入手吗?
- 安徽淮南大众CC新款价格2025款多少钱能落地?
- 淮北长安启源C798价格,最低售价12.98万起现在该入手吗?
- 安徽淮南途锐价格,各配置车型售价全解析
- 蒙迪欧试驾预约,4S店体验全攻略
- 沃尔沃XC40试驾需要注意什么
- 滁州ID.4 X新车报价2025款,各车型售价大公开,性价比爆棚
- 试驾思域,快速操作,轻松体验驾驶乐趣
- 试驾长安CS35PLUS,一键搞定,开启豪华驾驶之旅
- 天津滨海ID.6 X落地价限时特惠,最低售价25.9888万起,错过不再有
- 天津滨海凌渡多少钱?看完这篇购车攻略再做决定
- 安徽池州长安猎手K50落地价,买车前的全方位指南
- 山东济南ID.6 CROZZ 2024新款价格,最低售价19.59万起,现车充足
- 试驾海狮05EV,新手必知的详细步骤
- 生活家PHEV多少钱 2025款落地价走势,近一个月最低售价63.98万起,性价比凸显
- 奇瑞风云A9试驾,新手必知的详细步骤