Android四大组件之Activity<上>
2017-03-09 09:59
357 查看
Android 四大组件:Activity,BroadcastReceiver,Service,Content Provider。
现在先了解Activity。本节内容主要有:
生命周期
启动方式
之间传值
可以看到生命周期的几个步骤:
onCreate—onStart—onResume()—onPause—onStop—onDestroy—onRestart.
文字梳理下:正确启动一个Activity,首先执行onCreate,接着onStart,接着onResume,到此你就可以看到ui了。当前Activity被其他Activity覆盖掉,被切换到后台,这时执行onPause,接着执行onStop,此时在后台不可见,不会立即进行销毁即onDestroy,如果其他app运行起来不够内存,则会把切换到后台的Activity进行回收,被杀。如果运行内存足够,用户再次把切换到后台的Activity切换到前台,则走onRestart—onStart—onResume路线。
下面代码演示两个Activity之间的切换以及按home键,按返回键退出应用时的生命周期。
1.两个Activity切换的生命周期。
FirstActivity代码如下:
SecondActivity代码如下:
首先启动app,显示的是FirstActivity.
打印顺序如下:
点击跳转到SecondActivity.猜想顺序如下,FirstActivity.onPause—
SecondActivity.onCreate—SecondActivity.onStart—SecondActivity.onResume–FirstActivity.onStop.
看看打印log,是不是这样?
如下:
没问题,FirstActivity不可见执行onStop.
接下来,再次点击跳转到FirstActivity.
顺序应该是:SeconActivity.onPause—Firstactivity.onCreate—Firstactivity.onStart–Firstactivity.onResume—SeconActivity.onStop
log如下:
2.按Home键的生命周期
那就是当前Activity切换到后台再切到当前可见,走onPause–onStop.接着走onRestart–onStart–onResume.
如图:
3.按返回键的生命周期和它的启动模式有关。
现在先了解Activity。本节内容主要有:
生命周期
启动方式
之间传值
- 生命周期
来一张最经典的Activity的生命周期图:可以看到生命周期的几个步骤:
onCreate—onStart—onResume()—onPause—onStop—onDestroy—onRestart.
文字梳理下:正确启动一个Activity,首先执行onCreate,接着onStart,接着onResume,到此你就可以看到ui了。当前Activity被其他Activity覆盖掉,被切换到后台,这时执行onPause,接着执行onStop,此时在后台不可见,不会立即进行销毁即onDestroy,如果其他app运行起来不够内存,则会把切换到后台的Activity进行回收,被杀。如果运行内存足够,用户再次把切换到后台的Activity切换到前台,则走onRestart—onStart—onResume路线。
下面代码演示两个Activity之间的切换以及按home键,按返回键退出应用时的生命周期。
1.两个Activity切换的生命周期。
FirstActivity代码如下:
public class FirstActivity extends Activity { private TextView mFirstTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("LWS", "FirstActivity执行onCreate方法!!!"); setContentView(R.layout.activity_first); initViews(); } /** * 初始化组件 */ private void initViews(){ mFirstTv=(TextView) findViewById(R.id.tv_first); mFirstTv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent(FirstActivity.this,SecondActivity.class)); } }); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("LWS", "FirstActivity执行onStart方法!!!"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.d("LWS", "FirstActivity执行onRestart方法!!!"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d("LWS", "FirstActivity执行onResume方法!!!"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d("LWS", "FirstActivity执行onPause方法!!!"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d("LWS", "FirstActivity执行onStop方法!!!"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("LWS", "FirstActivity执行onDestroy方法!!!"); } }
SecondActivity代码如下:
public class SecondActivity extends Activity { private TextView mSeconTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("LWS", "SecondActivity执行onCreate方法!!!"); setContentView(R.layout.activity_second); initViews(); } /** * 初始化组件 */ private void initViews() { mSeconTv = (TextView) findViewById(R.id.tv_second); mSeconTv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent(SecondActivity.this, FirstActivity.class)); } }); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("LWS", "SecondActivity执行onStart方法!!!"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.d("LWS", "SecondActivity执行onRestart方法!!!"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d("LWS", "SecondActivity执行onResume方法!!!"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d("LWS", "SecondActivity执行onPause方法!!!"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d("LWS", "SecondActivity执行onStop方法!!!"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("LWS", "SecondActivity执行onDestroy方法!!!"); } }
首先启动app,显示的是FirstActivity.
打印顺序如下:
点击跳转到SecondActivity.猜想顺序如下,FirstActivity.onPause—
SecondActivity.onCreate—SecondActivity.onStart—SecondActivity.onResume–FirstActivity.onStop.
看看打印log,是不是这样?
如下:
没问题,FirstActivity不可见执行onStop.
接下来,再次点击跳转到FirstActivity.
顺序应该是:SeconActivity.onPause—Firstactivity.onCreate—Firstactivity.onStart–Firstactivity.onResume—SeconActivity.onStop
log如下:
2.按Home键的生命周期
那就是当前Activity切换到后台再切到当前可见,走onPause–onStop.接着走onRestart–onStart–onResume.
如图:
3.按返回键的生命周期和它的启动模式有关。
相关文章推荐
- Android四大组件之Activity<中>
- Android四大组件之一Activity的生命周期<学习笔记>
- 4.Android基础:四大组件之----->Activity
- android 四大组件之--------------Service <二>
- android 四大组件之--------------Service <一>
- Android学习笔记:<一>Android 四大组件
- Android的四大组件之三--Activity(4)----->Activity的启动方式和相关参数
- <Android知识点整理>1.Android的四大组件
- android-四大基本组件-<二>
- Android自定义组件<实现可重用性与可扩展性>
- android四大组件之Activity
- Android拨号界面输入*#*#<code>#*#*转入自定义Activity流程
- Android四大组件之Activity
- Android心得2.4--四大组件之一--Activity
- Android学习笔记(1)————Android四大组件之一(Activity)
- 在AndroidManifest.xml文件中<activity>的android:windowSoftInputMode属性使用
- Android四大组件之Activity
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
- android <activity>标签的属性
- android四大组件之Activity以及常见的view处理