RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
简析Activity生命周期-创新互联

Activity和所有的生物一样,也有生老病死这一说,这就是我们将要了解的Activity生命周期的概念。

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都人造雾等,在网站建设公司全网营销推广、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

  一:生命周期

  Activity的生命周期如下图所示:

简析Activity生命周期

  Activity的生命周期分为四个阶段

  (1)运行态:

  应用程序启动之后,若Activity处于屏幕的最前端,可以与用户进行交互的界面,我们说其具有运行态。一个Activity从创建到运行态,需要经历onCreate-->onStart-->onResume三个阶段

  (2)暂停态:

  Activity被置于后台,但是用户仍然可见,失去焦点,只是暂时不能进行交互,调用onPause()进入暂停态。进入暂停态的Activity,若想重新回到运行态,需要调用onResume()方法

  (3)停止态:

  Activity被置于后台,完全被其他Activity挡住,失去焦点,不能交互,调用onStop()进入停止态。若想重新回到运行态,需经过onRestart()-->onStart()-->onResume()三个阶段,此时应注意实行onRestart方法之后程序进入到的是onStart而不是onCreate。也就是说:onCreate()方法,只被执行一次,onResume()无论在什么状态均需要执行,onStart()旨在创建和onestart()之后执行一次。

  (4)终止态:

  Activity被终止,比如点击“返回”键之后,将结束程序的执行,调用onDestory()方法,进入到终止态。若想重新回到运行态,需重新定义Activity。

  二:作用

  清晰的区分Activity的生命周期,在以后的编程操作中,我们可以清晰的知道哪些操作应该在哪些状态下运行。比如某功能,要求用户第一次登陆时要注册,在此登陆的时候则直接跳入,这样的功能我们应该在onCreate方法中是实现,因为onCreate在应用程序的执行中,只运行一次。

  三:生命周期的调用时机

  1:调用时机

  这六个方法,不需要用户手动调用,由系统自动调用。然而不同的方法调用的时机却不相同。

  测试方法:创建工程,在主界面中,重写六个方法,添加输出语句,执行程序,按上述几种状态,分别测试程序,看后台输出即可验证结果。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("onCreate");
    }
    @Override
    protected void onStart() {
        super.onStart();
        System.out.println("onStart");
    }
    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("onResume");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        System.out.println("onRestart");
    }
    @Override
    protected void onPause() {
        super.onPause();
        System.out.println("onPause");
    }
    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        System.out.println("onDestory");
    }
}

  测试结果:

   ①程Activity动,自动依次进入onCreate-->onStart-->onResume三个状态

   ②按home键,Activity全被挡住,依次进入到onPause-->onStop两个状态

   ③按返回键,终止程序执行,依次进入到onPause-->onStop-->onDestory状态

   ④长按home键,重新执行程序,依次进入到onRestart-->onStart-->onResume三个状态

 2: 思考

  单击A页面按钮实现从页面A到页面B的跳转,此时两个Activity处于生命周期的什么状态下呢?

  解决办法:

 (1) 创建工程,编写自定义Act2,在Act2中添加如上代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act2);
    System.out.println("2----onCreate");
}
@Override
protected void onStart() {
    super.onStart();
    System.out.println("2----onStart");
}
@Override
protected void onResume() {
    super.onResume();
    System.out.println("2----onResume");
}
@Override
protected void onRestart() {
    super.onRestart();
    System.out.println("2----onRestart");
}
@Override
protected void onPause() {
    super.onPause();
    System.out.println("2----onPause");
}
@Override
protected void onStop() {
    super.onStop();
    System.out.println("2----onStop");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    System.out.println("2----onDestory");
}

  (2)在主界面上,添加跳转的实现及其他生命周期方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    System.out.println("1----onCreate");
    findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                   
        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(MainActivity.this,Act2.class);
            startActivity(i);              
        }
    });
}
@Override
protected void onStart() {
    super.onStart();
    System.out.println("1----onStart");
}
@Override
protected void onResume() {
    super.onResume();
    System.out.println("1----onResume");
}
@Override
protected void onRestart() {
    super.onRestart();
    System.out.println("1----onRestart");
}
@Override
protected void onPause() {
    super.onPause();
    System.out.println("1----onPause");
}
@Override
protected void onStop() {
    super.onStop();
    System.out.println("1----onStop");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    System.out.println("1----onDestory");
}

  (3)运行工程,点击按钮,观看控制台,结果如下:

08-20 13:46:26.842: I/System.out(279): 1----onPause
08-20 13:46:26.875: I/System.out(279): 2----onCreate
08-20 13:46:26.875: I/System.out(279): 2----onStart
08-20 13:46:26.875: I/System.out(279): 2----onResume
08-20 13:46:27.212: I/System.out(279): 1----onStop

  答案:由于此时A界面正在被B界面覆盖,所以A界面先进入到onpause状态,随后B界面启动,进入onCreate-->onStart-->onResume三个状态,之后A界面被完全挡住,A界面到达onStop状态。

  Activity生命周期十分重要,要重点掌握,以后我们会经常用到的,注意产生时机与作用,注意区别哦。。简析Activity生命周期

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


新闻名称:简析Activity生命周期-创新互联
网页网址:http://lswzjz.com/article/eiocp.html