小白带你学安卓——Acitivity的生命周期
来源:互联网 发布:淘宝图片ps教程视频 编辑:程序博客网 时间:2024/04/28 15:48
今天带着大家看一下Activitiy的生命周期,(前几天刚刚回家,然后和朋友们玩了两天~)关于Acitivity是什么东东,我在这里就不做陈述了哦!Activity可以被理解为一个窗口,与用户进行交互的一个界面。那我们今天就了解一下Acitivity的生命周期都由哪些部分组成。 先贴一张图,可能大家对里面的东西不是很理解,等一下我会解释一下:
当然了,这张图是我在网上找到的,自己画的呢好像有点难看,大家可以看一下,这里的Acitivity的生命周期一般情况下会有四种情况。这是在图中可以明显看到的。 Activity生命周期的方法不需要显示调用,系统在Actitiy状态变化(创建/显示时/不可见时等)会自己调用。 onCreate:当Actvitiy创建时会调用,做一些初始化工作 onStart:当Actitiy即将可见时候调用 onResume:当Actitiy已经可见,并且即将与用互进行交互 Actitiy此时位于后退栈的顶部 onPause:当有其它的Actitiy即将覆盖此Actitiy时这个方法里面用保存需要保存的数据(停止动画以及一些其它的耗费CPU资源的事情) onStop:当此窗口完全不可见时会调用(别的Activity将其覆盖) onDestroy:当Actitiy销毁前会调用(做一些清理性的工作,如果想关闭某个窗口,代码中可以调用finish();方法) onRestart:当Actitiy被其它窗口完全覆盖(stop),重新导回此Activity时会被调用 接下来说一下图中的四种方法,我对这个理解不是很深入,但是作为小白(有人又告诉我这个是面试的题目问答,所以还是在网上看了一些,然后我自己简单的总结了一下~) Activity的生命周期: a.起动一个Actitiy onCreate--->onStart--->onResume 此时按Back键 onPause--->onStop--->onDestroy b.如果有另外一个窗口将其完全覆盖 onPause--->onStop 重新导回来 onRestart--->onStart--->onResume c.如果有另外一个窗口将其不完全覆盖 onPause 重新导回来 onResume d.如果Activity处于onPause或者onStop状态,如果内存不足,有可能该窗口会被系统干掉,用户重新导回来,会从onCreate重新开始 接下来呢,我贴一下我做测试的代码,供大家进行参考~ 这里写三个java文件,第一个是我们的MainAcitivity:
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;/* * Activity生命周期的方法不需要显示调用,系统在Actitiy状态变化(创建/显示时/不可见时等)会自己调用 */public class MainActivity extends Activity{ /* * 当Actvitiy创建时会调用 初始化工作 * savedInstanceState:当Actitiy意外销毁时,如果你在onSaveInstanceState保存了数据,这个参数就是前面保存的数据 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LogUtil.d("onCreate..."); //导包的快捷键 ctrl+shift+o findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Intent:意图 描述你想干的事情 Intent intent = new Intent(MainActivity.this, SecondActitiy.class); startActivity(intent); } }); } /* * 当Actitiy即将可见时候调用 初始化工作 */ @Override protected void onStart() { super.onStart(); LogUtil.d("onStart..."); } /* * 当Actitiy已经可见,并且即将与用互进行交互 Actitiy此时位于后退栈的顶部 */ @Override protected void onResume() { super.onResume(); LogUtil.d("onResume..."); } /* * 当有其它的Actitiy即将覆盖此Actitiy时 * 这个方法里面用保存需要保存的数据 * 停止动画以及一些其它的耗费CPU资源的事情 */ @Override protected void onPause() { super.onPause(); LogUtil.d("onPause..."); } /* * 当此窗口完全不可见时会调用(别的Activity将其覆盖) */ @Override protected void onStop() { super.onStop(); LogUtil.d("onStop..."); } /* * 当Actitiy销毁前会调用 * 做一些清理性的工作 * * 如果想关闭某个窗口,代码中可以调用finish();方法 */ @Override protected void onDestroy() { super.onDestroy(); LogUtil.d("onDestroy..."); } /* * 当Actitiy被其它窗口完全覆盖(stop),重新导回此Activity时会被调用 */ @Override protected void onRestart() { super.onRestart(); LogUtil.d("onRestart..."); }}
这里有一个Button按钮,点击它就可以跳转到第二个Activity。对于里面提到的Intent意图,我们在后面也会说到,只是现在用它来作为跳转,在这里大家不必去纠结这里~ 第二个是我们的SecondActivity文件,这里是第二个Activity
import android.app.Activity;import android.os.Bundle;/* * 创建一个Activity * 1.写一个类继承Activity * 2.重写onCreate方法 * 3.给它给一个布局,关联布局 * 4.要在清单文件中注册 */public class SecondActitiy extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); }}
这里给出了创建一个新的Acitivity的步骤流程,大家可以参考一哈。 第三个是我们的logutil文件,这个只是为了用的比较方便一些,所以这样写的,对日志进行了简单的封装
import android.util.Log;//进一步封装日志打印类,给其增加一个开关,以便上线时,关闭日志的打印public class LogUtil{ //开关 是否打印日志 public static final boolean DEBUG = BuildConfig.DEBUG; private static final String TAG ="TT"; public static void d(String tag,String msg) { if(DEBUG) { Log.d(tag, msg); } } public static void d(String msg) { if(DEBUG) { Log.d(TAG, msg); } } public static void d(Object obj,String msg) { if(DEBUG) { Log.d(obj.getClass().getSimpleName(), msg); } } public static void i(String tag,String msg) { if(DEBUG) { Log.d(tag, msg); } }}
对于Activity的生命周期的简单总结到这里就先告一个段落了,因为里面还有很多东西需要去讲,所以我会带着大家把小白过渡之后,再和大家一起攻克其他的困难问题~ 先给大家做一个预告,下一个文章是关于Activity的走动模式的。我会简述原理,使大家对知识点看起来不是很麻烦~如果有不对的地方,还请大家批评指出。
阅读全文
0 0
- 小白带你学安卓——Acitivity的生命周期
- 小白带你学安卓——Intent
- 小白带你学安卓——简单的事件监听
- 小白带你学安卓——Activity的启动模式
- 小白带你学安卓——初识android
- 小白带你学安卓——UI设计
- 小白带你学安卓——工程目录结构及日志
- 小白带你玩VMware(一)虚拟机的创建
- Acitivity的生命周期
- 小白带你学习C++(2)This指针的引用
- 小白带你玩VMware(二)Linux系统的安装(以Linux-Mint为例)
- Acitivity的生命周期,自己的理解
- Android 监听各个Acitivity的生命周期
- Python小白带小白初涉多进程
- Python小白带小白初涉多线程
- Android开发,Acitivity生命周期
- Acitivity生命周期分析
- 如何在Acitivity生命周期里获得View的宽高
- java调用C# webservice接口使用axis报错
- elastic search plugin head install guids
- PAT a1037题解
- #ffffff为什么是白色
- 科班出身和培训上岗的程序员谁更牛?
- 小白带你学安卓——Acitivity的生命周期
- TCP/IP四层模型和OSI七层模型的概念
- idea导入maven项目,并在tomcat中访问
- 喜欢是第一原动力
- android中关于canvas的rotate,save和restore的总结
- android 中RectF构造函数参数说明
- 两个栈实现队列的功能。(外部接口是队列)
- algorithm count 函数
- POJ 3013 Big Christmas Tree(dijkstra 堆优化)