zoukankan      html  css  js  c++  java
  • 10天学安卓-第七天

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

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

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

    联想到我们还有onCreate,那么这两个方法是做什么用的?是什么原理呢?

    这就需要我们来了解一下Activity的生命周期。

    Activity生命周期

    2012120122450787

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

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

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

    3. Activity重新获得焦点的时候,会依次执行onRestart、onStart和onResume

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

    举个例子:

    在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

  • 相关阅读:
    《FLASH CC 2015 CANVAS 中文教程》——2、基本的交互(点击、触摸)事件
    《FLASH CC 2015 CANVAS 中文教程》——1、导出canvas动画,文件结构浅析
    微信 长按 无法 识别二维码 解决办法
    用一张图片制作skybox图片 (如何制作360全景图、立方体)
    FLASH CC 2015 CANVAS (七)总结
    FLASH CC 2015 CANVAS 中 gotoAndStop、gotoAndPlay() 不起作用
    FLASH CC 2015 CANVAS 中 createjs 移除绑定事件
    Factorized Hidden Variability Learning For Adaptation Of Short Duration Language Identification Models
    Empirical Evaluation of Speaker Adaptation on DNN based Acoustic Model
    Utterance-Wise Recurrent Dropout And Iterative Speaker Adaptation For Robust Monaural Speech Recognition
  • 原文地址:https://www.cnblogs.com/game-over/p/4244422.html
Copyright © 2011-2022 走看看