10天学安卓-第七天

咱们上次学习了百度定位以及SharedPreferences的使用,不知道你们有没有注意到咱们新加了一个方法:java

    protected void onStop()
    {
        super.onStop();
        mLocationClient.stop();
    }

 

这个方法的做用是在界面中止的时候,同时中止百度定位功能。ide

 

联想到咱们还有onCreate,那么这两个方法是作什么用的?是什么原理呢?学习

这就须要咱们来了解一下Activity的生命周期。日志

Activity生命周期

2012120122450787

Activity的整个生命周期有七个重要方法,分别是onCreate、onStart、onResume、onPause、onStop、onRestart、onDestroy,并且这七个方法在不一样的状态下会有不一样的触发时机,生命周期

1. Activity启动的时候,会依次执行onCreate、onStart和onResumeci

2. Activity失去焦点的时候,会依次执行onPause和onStopget

3. Activity从新得到焦点的时候,会依次执行onRestart、onStart和onResumeit

4. Activity关闭的时候,会依次执行onPause、onStop和onDestroyio

举个例子:class

在APP已经启动的时候,若是按下Back键,那么就是第4种-关闭的状况,会依次执行onPause、onStop和onDestroy,

按下Home键,那么就是第2种-失去焦点的状况,会依次执行onPause和onStop,这个时候若是再次启动APP,就会是按照第3种-从新得到焦点的状况,会依次执行onRestart、onStart和onResume。

为了验证这一点,咱们修改一下MainActivity.java,添加如下方法:

    @Override
    protected void onPause()
    {
        Log.v( "WeatherAPP", "onPause" );
        super.onPause();
    }

    @Override
    protected void onRestart()
    {
        Log.v( "WeatherAPP", "onRestart" );
        super.onRestart();
    }

    @Override
    protected void onResume()
    {
        Log.v( "WeatherAPP", "onResume" );
        super.onResume();
    }

    @Override
    protected void onStart()
    {
        Log.v( "WeatherAPP", "onStart" );
        super.onStart();
    }

    @Override
    protected void onDestroy()
    {
        Log.v( "WeatherAPP", "onDestroy" );
        super.onDestroy();
    }

 

 

而且在onCreate和onStop方法内加入分别加入:

        Log.v( "WeatherAPP", "onCreate" );
	Log.v( "WeatherAPP", "onStop" );

 

 

而后运行程序,试着重复以上操做,而且在Logcat View中查看相应的Log。

这里说一点小技巧,点击Logcat View左上角的绿色加号,能够添加自定义的日志过滤器,我这里就是用了这样的功能。

QQ截图20140927194650

QQ截图20140927194550

 

在明白了Activity的生命周期后,它们在实际的APP中具体怎么应用?

那么,举一些例子。

1. 若是咱们的预报天气APP须要在用户每次从新可见的时候都获取最新天气,那么调用获取天气相关的代码就须要放置到onResume方法中

2. 另一种状况,咱们的APP已经在前台可见了,这时候来了电话,就变得不可见了,以后挂了电话,又从新可见了,这个时候一般是不须要从新获取数据的,那么调用获取天气相关的代码就须要放置到onStart方法中

3. 最简单的状况,咱们只须要在启动的时候获取天气,那么就只须要在onCreate方法中执行

因此呢,技术不是问题,一切都须要根据实际的须要来决定咱们的程序应该如何实现。

 

以上是简单介绍了一下Activity的生命周期,你们能够在实践中慢慢摸索,而且以上介绍的都只是基础内容,高阶一点的内容咱们将在以后的学习中慢慢接触。

 

在了解了生命周期后,是否是要对咱们的APP作些修改呢,嗯,就按照第2种状况修改吧。

所要作的只是把下面这段代码从onCreate方法移到onStart中。

        String city = readCity();
        if( city != null && city.length() > 0 )
        {
            getWeather( city );
        }

 

看看结果是否是想要的呢。

 

想必练习到这里,你们也都累了,理论知识真是恼人,不过确实是咱们所必须的,只有通过理论武装的知识才能发挥出最大做用。

今天就到这里吧,各位辛苦了。

明天是周末,会有不少的内容,请你们期待!

 

此系列文章系本人原创,如需转载,请注明出处 www.liuzhibang.cn

相关文章
相关标签/搜索