Android核心技术之(2)---四大应用组件之Activity

1.组件的特点

它的类必须实现特定的接口或者继承特定的类;

需要在配置文件中配置其全类名;

它的类实例不是通过new来创建的,而是系统自动创建的;

它的对象都有一定的生命周期,它的类中都有对应的生命周期的回调方法。


2.Activity的定义

Activity直接翻译为活动,它是Android的四大应用组件之一,也是最重要的应用最多的组件;

Activity是用来提供一个让用户操作的并与之交互的界面;

一个应用有多个页面。也就是有多个Activity。

Activity的相关API:

      startActivity(Intent intent): 一般启动Activity

      startActivityForResult(int reqCode, Intent intent): 带回调启动Activity

      onActivityResult(int reqCode, int resultCode,Intent data): 回调方法

      setResult(int resultCode, Intentdata): 设置要返回的结果

      finish(): 结束当前Activity

     getIntent(): 得到启动Activity的意图



3.Intend的理解

Intend直接翻译为意图,也就是你想要做什么或者去哪儿;

Intend是Activity、Service、BroadCastReceiver这三个应用组件之间进行通信的信使;

Intend对象还可以携带数据;

Intend可以分为显示意图和隐示意图两种:显示意图,明确指定的目标组件的意图,当操作当前自己的应用组件时使用;隐式意图,没有明确指定目标组件的意图,当操作其他应用的组件时使用;


Intent的相关API:

      Intent(Context packageContext,Class<?> cls) :  用于创建显示意图对象

      Intent(String action): 用于创建隐式意图对象

      putExtra(String name, Xxx value): 保存额外数据

      Xxx getXxxExtra(String name): 获取额外数据

      setData(Uri data): 设置有特定格式的uri数据


4.IntendFilter的理解

在配置Activity时,可以为Activity指定一个IntendFilter的配置;

如果你的Activity希望其他应用能访问到,需要配置<intend-filter>;

如果你想启动其他应用的界面你必须用隐式Intennd,且目标应用的界面配置了<intend-filter>.


5.Activity生命周期相关的方法

onCreate()、onStart()、onResume()、onPause()、onRestart()、onStop()、onDesdory()


6.编写Activity的一般步骤

1.定义Activity类的子类SecondActivity

2.AndroidManifest.xml配置定义的组件

3.定义布局文件activity_second.xml

4.重写ActivityonCreate(),加载布局文件


7.启动一个Activity

//一般启动Activity
public void startOne(View v){
    //1). 创建Intent对象(显式)
    Intent intent = new Intent(this, SecondActivity.class);
    //2). 通过intent携带额外数据
    String message = et_main_message.getText().toString();
    intent.putExtra("MESSAGE", message);
    //3). 启动Activity
    startActivity(intent);

}

//带回调启动Activity
public void startTwo(View v){

    //1). 创建Intent对象(显式)
    Intent intent = new Intent(this, SecondActivity.class);
    //2). 通过intent携带额外数据
    String message = et_main_message.getText().toString();
    intent.putExtra("MESSAGE", message);
    //3). 带回调启动Activity
    int requestCode = 2;
    startActivityForResult(intent, requestCode);

}

//第二Activity获取上一个Activity的数据
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    et_second_message = (EditText) findViewById(R.id.et_second_message);


    //4). 得到intent对象
    Intent intent = getIntent();
    //5). 通过intent读取额外数据
    String message = intent.getStringExtra("MESSAGE");
    //6). 显示到EditText
    et_second_message.setText(message);
}

//结束一般的Activity的方法
public void back1(View v) {
    //关闭当前界面
    finish();
}

//结束带回调的Activity的方法
public void back2(View v) {

    //保存一个结果
    int resultCode = 3;
    //准备一个带额外数据的intent对象
    Intent data = new Intent();
    String result = et_second_message.getText().toString();
    data.putExtra("RESULT", result);
    //设置结果
    setResult(resultCode, data );

    //关闭当前界面
    finish();
}

//第一个Activity获取第二个Actity的回调方法的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //判断code
    if(requestCode==2 && resultCode==3) {
        //data中取出数据
        String result = data.getStringExtra("RESULT");
        //显示
        et_main_message.setText(result);
    }

}

8.Activity界面的四种状态

运行状态:可见也可操作
暂停状态:可见但不可操作
停止状态:不可见,但对象存在
死亡状态:对象不存在

9.Task Stack

•在Android中,系统用Task Stack (Back Stack)结构来 存储管理启动的 Activity 对象
•一个应用启动,系统就会为其创建 一个对应的 Task Stack来存储并管理该应用的Activity对象
•只有最上面的任务栈的栈顶的Activity才能显示在窗口中
•在Android中,启动一个Activity有时需要总是创建一个新对象, 有时需要复用已有的对象, 可以通过在配置activity时通过 launchMode 指定

launchMode属性值(4个)为:
standard:标准模式,每次调用startActivity()方法就会产生一个新的实例。
singleTop:如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例;如果不位于栈顶,会产生一个新的实例。
singleTask:只有一个实例, 默认在当前Task中
singleInstance:只有一个实例, 创建时会新建一个栈, 且此栈中不能有其它对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值