189 8069 5689

【移动开发】Android中Activity剖析-创新互联

  又到了暑假,大四的走了,我们理所当然成为了学校的老大,哈哈!今年不打算回家了,在学校和校友一起参加比赛做项目。好久就有写博客的冲动,但老是被各种事情所打扰,今天终于考完试了,于是在安静的宿舍开始提笔写起我的第一篇博客。写博客的目的主要是:总结以下这一年多来接触Android开发中所学到的知识,以此来督促自己不断地前进学习(废话比较多。。。此段可以忽略)

创新互联是一家集网站建设,府谷企业网站建设,府谷品牌网站建设,网站定制,府谷网站建设报价,网络营销,网络优化,府谷网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
  1. Activity 栈

      Android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。

      当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。Activity 的状态与它在栈中的位置关系如下图所示:

    【移动开发】Android中Activity剖析

  2. Activity的生命周期

  首先看看android developers 网上的activity的生命周期图:

【移动开发】Android中Activity剖析

  其实,当初我第一次开始看到此图的时候,也是一头雾水,于是就写了一个Demo简单测试一下,结果就清楚明了了:

package com.tutor.activitydemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class ActivityDemo extends Activity {
    private static final String TAG = "ActivityDemo";
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.e(TAG, "---》onCreate()");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.e(TAG, "---》onStart()");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.e(TAG, "---》onRestart()");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.e(TAG, "---》onResume()");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.e(TAG, "---》onPause()");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.e(TAG, "---》onStop()");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e(TAG, "---》onDestroy()");
    }
}

方法说明:

  1.protected void onCreate(Bundle savedInstanceState)一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据(加载用户数据库保存数据,配置信息)、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。

  2.protected void onStart()该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。

  3.protected void onResume() 在 Activity 从 Pause 状态转换到 Active 状态时被调用。

  4.protected void onResume()在 Activity 从 Active 状态转换到 Pause 状态时被调用。

  5.protected void onStop()在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。

  6.protected void onDestroy()在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源清理内存等工作。

打印结果分析:

 第一组

   1.打开应用后执行顺序:onCreate()->onStart()->onResume()

   2.按Back键后结束这个应用:onPause()->onStop()->onDestory()

 第二组

  3.按Home键后:onPause()->onStop()这两个方法,这时候应用程序并没有销毁;紧接着再次进入此程序会执行:onRestart()->onStart()->onResume()

  为了更好的理解Activity的生命周期,从网上找到此图:

【移动开发】Android中Activity剖析

  从上图可以看到,最右边下方的Android机器人代表启动一个Activity,经过一系列的操作和过程,经过三个生命周期回调方法,到达金字塔的顶层,爬到顶层就可以供用户操作了。然后从金字塔顶往下,再经过三个生命周期方法,就又到了金字塔的另一边底层,Activity就销毁了。但是当下金字塔的时候,只要没到最下面,都有通道可以回到最顶层。

  1.Activity在onStart方法调用后,就处于可见状态了(visible)

  2.当经过onPause方法后处于暂停状态(Paused),这时Activity处于半透明状态,为不可操作的,比如弹出一个模态框。这时Activity不会执行任何代码

  3.Activity在调用onStop方法后即处于用户不可见的状态了(invisible)

  4.onCreate方法在整个生命周期只会被调用一次

  5.自定义Activity继承Activity类后有没有需要必须实现的方法?答案是没有,但是要想启动和显示一个Activity,就必须实现onCreate方法并指定布局文件

  6.大部分的清理操作应该在onPause和onStop中执行,如果在onCreate中开启了耗时线程或耗资源的线程操纵,应该在onDestroy中杀死线程

 注意:

  系统一般都是在执行完onPause和onStop方法后再执行onDestroy方法,但是当在onCreate方法中调用了Activity的finish()方法后,比如在onCreate方法里启动新的Activity并调用了finish方法,这时系统会直接调用onDestroy方法!

就这些吧,东西比较简单,主要是为了练练博客怎么写,嘿嘿!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:【移动开发】Android中Activity剖析-创新互联
网页链接:http://jkwzsj.com/article/cegidg.html

其他资讯