Android:Activity组件学习笔记

原创 2015年07月08日 00:12:27

一、Activity简介

1、Activity是android四大组件之一,在app中提供一个界面供用户交互,同时又具有生命周期,其生命周期交给系统去管理,我们在操作中只是给出指示而已。

2、同一个app中的activity相对其他activity是独立的,多个应用程序间的activity可以相互访问。例如,android官网上举的例子,摄像机可以调用邮箱来分享图片。

二、Activity栈

activity栈 由系统提供,用来管理应用程序中的activity。

三、Activity生命周期



1、activity的四种状态:

(1)runing状态:当activity处于当前屏幕最前端,即在activity栈顶,则处于running状态

(2)paused状态:当activity失去焦点,但是仍然可见,可能被一个透明地activity或者是以对话框形式出现的activity挡住,则处于paused状态。当activity处于该状态,它仍然保留了activity的信息,但可能因内存过低而被系统杀掉。

(3)stoped状态:当activity被另一个activity完全的遮挡住,则处在stoped状态。当activity处在该状态,它仍然保留了activity的状态信息,但已经不再可见了,很容易被系 统杀掉

(4)killed状态,finish状态:activity处于该状态,若想再次显示,只能重新onCreate()

2、activity一些常见状态

(1)activity1跳转到activity2,先调用activity1的onPause(),等activity2依次调用onCreate()、onStart()、onResume()之后,activity1再调用onStop() 。

(2)当用户点击手机上的Back回退键,当前的activity会依次调用onPause()、onStop()、onDestroy() ,所以点击back键后,默认activity被销毁 。

(3)当用户点击手机上的Home键或者电源键,当前的activity会依次调用onPause()、onStop() 。重新回到activity则会调用onRestart()、onStart()、onResume() 。

四、Activity传值

1、几种传值方式的代码

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

//Bundle传值
Bundle bundle = new Bundle() ;
bundle.putString("name", "cigar");
bundle.putInt("age", 24);
intent.putExtra("info" , bundle) ;

//直接传值
intent.putExtra("sex", "男") ;

//Serializable对象传值
Student student = new Student() ;
student.setId(20100802931223L);
student.setName("cigar");
intent.putExtra("student",student) ;

//Parcelable对象传值
Person person = new Person();
person.setName("cigar");
person.setSex("男");
person.setAge(24);
intent.putExtra("person", person);

MainActivity.this.startActivity(intent);
2、获取值的代码

Intent intent = this.getIntent();
//获取传过来的bundle值
Bundle bundle = intent.getBundleExtra("info");
String name = bundle.getString("name");
int age = bundle.getInt("age");

//直接获取值
String sex = intent.getStringExtra("sex");

//获取Serializable对象
Student student = (Student) intent.getSerializableExtra("student");

//获取Parcelable对象
Person person = intent.getParcelableExtra("person");
3、实现Parcelable接口的源码

public class Person implements Parcelable {
    private String name;
    private String sex;
    private int age;

    public Person() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person(Parcel in) {
        name = in.readString();
        sex = in.readString();
        age = in.readInt();
    }

    public static final Parcelable.Creator<Person> CREATOR
            = new Parcelable.Creator<Person>() {
        public Person createFromParcel(Parcel in) {
            return new Person(in);
        }

        public Person[] newArray(int size) {
            return new Person[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(getName());
        dest.writeString(getSex());
        dest.writeInt(getAge());
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

       实现Parcelable接口,必须实现public int describeContents() 和 writeToParcel(Parcel dest , int flags) 两个方法,其中describeContents默认不用动,在writeToParcel中将参数的值write进dest中。接着拷贝源码中的CREATOR,更改<MyParcelable>中的类型,这边改为Person,并定义一个带参数Parcel的构造方法 public Person(Parcel in) 。

相关文章推荐

Android学习--Activity组件

1.activity主要作用: 相当于一个界面,是用户和应用程序交互的接口,可以放置各种控件, 相当于一个控件的容器 2.创建activity的要点: (1)一个activi...

Android学习第2步--Activity组件

按钮 Button 文本框 EditText 标签 TextView 单选 RadioButton(ischeck) 复选 CheckBox(ischeck) 数字时钟 DigitalClo...

Android的Activity组件启动,切换和值传递学习

前面已经学过了Activity的生命周期(链接地址:Activity生命周期学习),今天集中来学习一下Activity组件的启动,切换和值传递     1:首先是如何创建一个Activity:  ...

Android初识之Activity组件

  • 2014年05月13日 20:28
  • 1.44MB
  • 下载

Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口。这个启动窗口可以看作是Activity组件的预览窗口,是由WindowManagerServi...

Android自制滑动删除Activity组件

今天在做项目的时候,看到iOS端的实现效果是二级页面可以手指在界面上向右滑动关闭页面,而不再是右上角的返回按钮(说实在的,不能单手操作是Android的痛). 于是思考Android上...

Android研发安全-Activity组件安全(上)

Activity组件是用户唯一能看见的组件,作为软件所有功能的显示载体,其安全性不言而喻。针对Activity组件安全,作为一个安卓开发者来讲需要在日常开发过程中注意两点: - Activity访问...

Android -- Activity组件基础

Android -- Activity组件基础 PS:来源 - Activity Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送...

Android页面交互Activity组件(上)

Activity组件:负责用户交互组件(.java页面),Intent在Activity组件中应用于不同组件                (页面)之间通信的载体,Intent可以启动应用程序中另一...

android---(Activity组件、状态、生命周期、传递数据、处理返回结果、屏幕方向、保存数据)

3Activity生命周期 三大状态,七个方法public class MainActivity extends Activity { /** * 1.Activity 创建时,第一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android:Activity组件学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)