首页 >> 科技 >

Activity生命周期会表现出哪几种状态?(activity生命周期)

2023-08-12 16:42:22 来源: 用户: 

你们好,最近小时发现有诸多的小伙伴们对于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生命周期这篇文章的一些介绍,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章