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.重写Activity的onCreate(),加载布局文件
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