【笨鸟先飞】android重新学习日记4---程序的生命周期

有了界面,就有了图像,有了使用用户的程序就可以识别用户的操作,那么一个简单的程序就成功了,手机能展示各种图像,以及接受用户的操作,感觉就是一个完整的程序了,确实是这样的,但是手机里面不只一个程序,那么对于程序而已就有更多的操作了。

 

程序的启动,一开始我们进入的是桌面,这个程序,然后如果你点击某个程序的图标,就启动那个程序。

 

程序进入后台,你或许点击了home键,或许跳转到了其他程序,总之,当前程序变为了后台程序,那么该程序会进入一种暂停或者休眠的状态

 

程序回到前台。对于一个没有关闭的程序,无论你再次点击它的图标,还是通过后台运行程序列表,都是再次唤醒该程序

 

彻底关闭程序。那么该程序是关闭了,下次再运行这个程序就是启动程序,而不是唤醒程序。

 

以上的4种情况,对于着一个程序的生命周期

由于程序的生命周期,每个行为都有一个回调函数,所以,我们以回调函数来表示程序的生命周期:

onCreateonStartonResumeonRestartonPauseonStoponDestory

 

其中我们经常改写的是onCreateonResumeonPauseonDestory4个。

剩下3个因为不是单独触发,触发条件稳定度不高,如果不是特殊情况就不用改写了。

 

onCreate是程序第一次启动的时候会调用的函数,也就是创建这个程序时,我们会使用。

第一次启动时,onCreateonStart都会启动。onCreate是仅在第一次启动时,onStart则还有其他情况。

onPause是程序进入后台会启动的程序,当程序不在前台就一定会启用onPause,而且很大概率会启用onStop,也有部分情况不适用onStop

onResume是程序从后台返回的时候启用的函数,同时大多数情况会启动onStartonRestart

onDestory是彻底关闭的时候使用的,如果是从前台程序直接关闭,则onPauseonStoponDestory都会启用。

 

所以onStartonStoponRestart这三个在使用范围上,比较复杂,同时,基本情况可以尤其他4个完成。

甚至对于后台不进行操作的程序,只需要写onCreate就可以。

 

我目前学习的思路,这些知识是为了编程而生,因为代码逻辑需要所以才用它们。

 

说一下android四大基本组件:activiityservicecontent provider 以及broadcast

 

其中activity就是我们平时所说的程序。点击之后有界面的东西。

Service是服务是指没有界面,但是有程序的有代码的东西。

content providerbroadcast是两种不同的传输数据的组件。

 

Activity是要进行一些基础的配置,我们可以直接想到的是名字和图标。一个程序,需要一个图标和一个名字供给用户点击。

<application
    android:icon="桌面上的图标"
    android:label="桌面上图标的名字"

 <activity

android:name=".程序的类名1"

            android:label="进入界面后显示在界面正上方的名字"

android:launchMode="singleTask"  //这个后面讲

             >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />   

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

</application>

 

这是一个例子,其中intent-filter是可以不写的,这里写这个程序里面应该有多个activity其中,点击图标后打开的程序的类名1对应的activity

 

启动activity,最常见的是StartActivityintent),关于intent明天再学。这里根据intent就可以启动相应的程序。

 

launchMode是加载模式,Activity有四种加载模式:standardsingleTopsingleTasksingleInstance

 

加载模式主要是在有多个activity运行的情况下,其中一个应用中的一个activity去启动另外activity的时候。

 

standard,是每次启动的时候,都会启动一个新的,甚至可以自己启动自己,这样就会启动好多个。怎么知道自己启动了好多个了,最佳方式是点击返回键。返回键返回的上一个程序。对于标准模式,自己启动自己,启动好多次,那么点返回键,就很明显了。有兴趣的朋友可以试一试。

 

singleTop:是指当前应用是前台的话,被启动时,不会创建新的activity

 

singleTask: 这个就比较好用,在当前栈中只能启动当前这个activity的话。即,如果在同一个栈里面,如果你启动这个activity,那么,只要它被启动了,那么这个activity就被调到前台来。

 

singleInstance:这个就更加强大,无视栈的区别,只要是启动,就一定是这个activity

 

 

对于上面的解释很难理解,我提供几个前提,在使用这些前提的情况下,再来理解会容易一点

1activity换成界面,或者换成网络页面,或者是电脑的文件夹。

电脑文件夹就是典型的standard。你点击进入文件夹A,在进入文件B,在通过B中的快捷方式进入A。 你在这时的A中点击返回,返回到B里面。 再点击返回,回到A中。

 

2:要有多个activity的意识。这是针对有好几个activity的形式来的。可以考虑有3~5activity,他们可以互相启用。如果理解activity有困难,请参考思路1

 

3:不同栈,就是多线程的意识。之前java提到的ThreadRunnable,以及androidAsyncTask,不同线程不同栈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值