Android笔记(五十八)Android总结:四大组件——Activity篇
2015-11-14 01:30
351 查看
什么是Activity
Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成。每个Activity都对应一个布局文件,通过setContentView()方法来载入布局文件。并且通过用户对布局文件中的组件所发出的事件来做出相应的反映。
Activity的四种状态
1)激活状态,此时activity运行在屏幕前台2)暂停状态,此时activity失去焦点,但是用户仍然可以看到(例如这个activity上遮盖了一个透明的或者非全屏的activity)
3)停止状态,此时activity被其他activity完全覆盖
4)销毁状态,此时activity将会被系统清理出内存
Activity的回调方法
onCreate() 创建,activity初次创建时被调用,该方法中一般进行一些静态设置。onStart() 运行,activity对用户即将可见的时候调用
onResume() 获取焦点,当activity将要与用户进行交互时候调用
onPause() 失去焦点,当系统要启动一个其他的activity时调用(在其他activity显示之前调用)
onStop() 暂停,当另外一个activity恢复并遮盖当前activity,导致其对用户不可见时调用。
onDestroy() 销毁,在activity被销毁前所调用的最后一个方法
onRestart() 重新启动
这七个方法贯穿整个Activity的生命周期。
Activity的生命周期
activity的生命周期可以根据不同的标准分为完整生命周期、可见生命周期和前台生命周期。完整生命周期:onCreate()创建→onStrart()启动→onResume()获取焦点→onPause()失去焦点→onStop()暂停→onDestroy()销毁
可见生命周期: onStrart()启动→onResume()获取焦点→onPause()失去焦点→onStop()暂停
前台生命周期: onResume()获取焦点→onPause()失去焦点
Activity的启动模式
Activity有四种启动模式:standard、singleTop、singleTask、singleInstancestandard:默认启动方式,每开启一个新的activity,就在返回栈的顶端添加一个新的Activity实例,退出时依次退出。
singleTop:在启动的时候,如果发现栈顶上是要启动的Activity,则系统不在创建新的Activity。
singleTask:在启动的时候,会扫描整个返回栈,如果发现栈中有要启动的Activity,则把这个Activity上所有的Activity统统出栈。
singleInstance:有一个单独的栈来管理这个Activity,不管哪个程序访问这个Activity,都会共同使用这个栈。
Activity值传递
传递值使用putExtra()方法传递数据,该方法的第一个参数是键,第二个参数是要传递的数据,接收的Activity通过一系列getXXXExtra()方法将值取出使用。
传递对象
intent可以传递Serializable或者Parcelable对象,要传递的对象实现Serializable或者Parcelable接口,就可以将对象传入到一个Bundle中,然后使用intent的putExtra()方法将对象传递过去,接收的Activity通过getSerializableExtra或者getParcelableExtra方法获得对象。
MainActivity.java
package cn.lixyz.activitydemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class SecondActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("return_data", "HelloWorld"); setResult(RESULT_OK, intent); finish(); } }); } }
View Code
当Activity被意外回收时,数据该怎么办?
当一个Activity被pause或者stop的时候,这个Activity的对象实际上还是保存在内存中,因此这个Activity中的信息(成员和状态信息)还可以重新获取到.如果系统为了整理内存而销毁了整个Activity对象时,系统没法简单的原封不动地恢复先前的Activity对象及其状态信息.
从android手册上来看,Activity中提供了一个方法:onSavedInstanceState(Bundle outState).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中.
第一次启动Activity时,这个bundle对象是空的,null.如果Activity被系统销毁了,然后用户要回退回去看的话,系统会调用这个 Activity的onCreate方法,并把bundle对象传递过去.
这个函数有默认的行为,因此就算你不覆盖它,它在Activity中也有实现.
这回我总算明白了为什么onCreate方法的定义是"protected void onCreate (Bundle savedInstanceState)"这个样子的了.
另外,刚才查看了一下Activity的源码,发现Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity恢复先前保存的状态时会被调用.
Activity转跳之显式Intent和隐式Intent
显式Intent就是我们之前经常使用的直接指定转跳目标的形式,然后我们使用startActivity方法将intent传入就会转跳到我们向要的Activity中去隐式Intent并不明确的指定我们想要启动哪个Activity,而是指定了一些列的action和category等信息,然后让系统去分析这个intent并找到合适的activity进行转跳。
相关文章推荐
- Android-Activity中的onNewIntent()方法调用简析
- Android事件分发机制学习
- Android中selector的用法
- Android_VectorDrawable矢量图与SVG
- 实战:Android 时间、天气widget
- Android中调试获取Log
- android图片的缩放和旋转功能
- Android LruCache究竟是什么
- Android AsyncTask异步实现大文件下载
- android中的Dialog的使用
- 几步实现Android 开发中的弹窗效果
- Android 开发之创建桌面快捷图标
- Android studio 解决问题Default Activity not found
- [实践] Android源码 - Android系统初始化时创建自定义目录
- 详解Android触摸事件处理程序
- 【Android粒子动画】Android粒子动画渲染学习
- Android Launcher3的自定义修改总结
- Android按下返回键后,程序不退出,进入后台运行。使用moveTaskToBack(boolean nonRoot)
- Android消息机制
- 从源码角度解析Android消息机制