Android 知识点(Toast,Intent,活动的生命周期,活动的启动模式)

     有很长一段时间,自己都显得非常浮躁,毕竟懒懒散散学了一年的Android,却只会复制粘贴代码,基础的知识点相当薄弱。

拿出了郭霖的《第一行代码》第2版,准备复习一下,也确实收获了不少。

     1.关于Toast的用法

        之前一直用‘吐司’就是Toast.makeText(context,"",Toast.LENGTH_SHORT).show,几乎用了一年的这句。最近才发现

Toast.makeText(context,"",Toast.LENGTH_SHORT) 这句原来会返回一个Toast对象哭

所以现在可以这样用

Toast toast = Toast.makeText(context,"",Toast.LENGTH_SHORT) ;
toast.setGravrity(Garivity.CENTER,0,0);//0,0,为偏移量
toast.show();

首先我们可以设置 吐司 出现的位置,还可以设置其他的东西,使用setxxxxxx()函数应该就出来了。

     2.Intent的作用与用法(应该是重点微笑

     作用(1)不同组件之间传递数据

            (2)启动活动

            (3)启动服务

            (4)启动广播

用法:使用显示Intent:略

          使用隐式Intent:相比显示Intent而言,隐式Intent并不会明确告诉你想要启动那个活动,而是指定了一系列的action和category,data等信息,由系统去分析,最后确定启动哪一个活动。

          1.首先在你想要启动的那个活动(A活动)添加action和category或者data等信息(配置文件) ,一个活动最多只能有1个action,但能有多个其他信息。

          2.在另外一个活动中(B活动)每个按钮中添加跳转的响应事件,通过B活动来启动A活动,那就要在Intent中添加相应的动作和正确的category或者data之类的信息,要和A活动中的一样,这样隐式的就完成了。

          3.还有隐式Intent能够实现跨程序实现功能共享(比如可以利用自己写的程序来启动电话簿,浏览器)

          4.带有返回值的Intent   当一个活动启动到另外一个活动时,需要将当前活动信息返回到上一个活动,比如我通过自己的APP来启动相册,选中相册中的某张图片,确定之后,会回到当前活动并且返回一个图片,这个需要一个回调请求码。

      3.活动的生命周期

      (1) onCreate()创建一个新的活动的时候调用,onStart()活动有不可见变为可见的时候调用,onResume()用户交互的时候调用,onPause()启动或者恢复上一个活动的时候调用,onStop()活动完全变为不可见的时候调用,onDestory()在活动被销毁之前调用,onRestart()活动由停止状态变为运行状态的时候调用。

onCreate()--------onDestory()之间所经历的称为完整生存期

onStart()----------onStop()之间所经历的的称为可见生存期

onResume()------onPause()之间经历的称为前台生存期

     假设A,B两个活动,此时A活动启动了B活动,由于内存不足,A活动被系统回收了。当B活动要返回到上一个活动时,A活动已经被回收,不可能返回到上一个活动,会报错,但是并没有,因为A活动又一次被创建了,此时的A活动和第一次创建的活动不是一样的,但是之前的数据会丢失。怎么办?可以在活动中重写onSaveIntanceState(), 这个参数就会带有之前所保存的全部的数据,在活动A添加取数据的代码就行了。

4.活动的启动模式

1.standard

  这是Android默认的启动方式,所以在配置文件中我们看不见

系统不会在意你启动的活动在返回栈是否存在,是否处于栈顶,系统都会创建要启动活动的实例。

2.singleTop

设置活动的启动方式

在该活动的配置文件中这样写:

 android:lunchMode = "singleTop"

  如果启动活动时返现该活动已经在返回栈的栈顶,那么会直接调用这个实例,并不会创建新的实例。

3.singleTask

在该活动的配置文件中这样写:

 
 
 android:lunchMode = "singleTask"

启动活动时会遍历整个返回栈,如果启动的活动在返回栈中存在实例,那么就是用该实例,并且把该实例之上的所有活动全部出栈。

4.singleIntance(新建返回栈)

在该活动的配置文件中这样写:

 android:lunchMode = "singleIntance

看图说话




由first到second的时候,新建了一个返回栈B,second进栈,second启动了third时,third进入返回栈A中,当third按下返回键时会回到first中,接着按下返回键此时又一次回到second。

解释:B的启动模式为singleInstance,由first启动second时,会新建返回栈B,second进栈,接着second启动third时,third的启动模式为standard,所以会进入栈A,当按下返回键时,此时third会出栈,那么first会成为栈顶,所以会返回到first,再次按下返回键时,返回栈A已经没有活动的实例,所以会销毁,接着在去处理返回栈B的实例,那就回到回到second.


猜你喜欢

转载自blog.csdn.net/h2677lucy/article/details/79511656