一、Activity定义
1、Activity, 直译为活动, 它是Android定义的四大应用组件之一,也是最重要用得最多的.
2、Activity用来提供一个能让用户操作并与只交互的界面
3、一个应用界面可以包含多个Activity
二、生命周期以及方法
1、在Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期,,由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态

2、Activity中的方法以及使用方法:
1)方法:
1、startActivity(Intent intent): 一般启动
2、startActivityForResult(int reqCode, Intent intent): 带回调启动
3、onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
4、setResult(int resultCode, Intent data): 设置要返回的结果
5、finish(): 结束当前
6、Activity getIntent(): 得到启动Activity的意图
Activity的使用需要在Manifest文件中添加相应的<Activity>,并设置其属性和intent-filter。
2)用法:
1、定义
定义一个类extends Activity,并重写生命周期方法
在功能清单文件中使用<activity>注册
2、启动
一般 startActivity(Intent intent)
带回调启动:startActivityForResult(Intent intent,int requestCode)
重写onActivityResult(int requestCode,int resultCode,Intent data)
3、结束
一般:finish()
带结果的:setResult(int resultCode,Intent data)
3、其生命周期函数有:
onCreate()
onStart()
onResume()
onPause()
onRestart()
onStop()
onDestory()
4、Activity的四种状态
运行状态: 可见也可操作
暂停状态: 可见但不可操作
停止状态: 不可见,但对象存在
死亡状态: 对象不存在
二、Intent
1、Intent的理解
1)Intent直意为意图,也就是你想要做什么或想要去哪
2)Intent是Activity, Service和BroadcastReceiver这三个应用组件之间进行通信的信使
3)Intent是可以携带数据的
4)要在Activity中启动另一个Actvity, 就必须使用Intent对象
注意:Intent不是四大组件之一
2、Intent分类
1)显示意图:明确指定目标组件的意图
创建对象:Intent(Context context, Class clazz)
何时使用 : 当操作当前自己应用的组件时使用
2)隐式意图:没有明确指定目标组件的意图
创建对象:Intent(String action)//于Acityity中<intent-filter>的action匹配
何时使用 : 当操作其它应用的组件时使用
3)携带数据:
额外数据:putExtra(String key,Xxx value); 内部用map容器保存
有特定前缀:setData(Uri data)//setData(Uri.parse("tel:"+内容))
4)读取数据
额外数据:Xxx getXxxExtra(String key)
有特定前缀:Uri getData()
3、Intent中的方法
1)Intent(Context packageContext, Class<?> cls) : 用于创建显示意图对象
2)Intent(String action): 用于创建隐式意图对象
3)putExtra(String name, Xxx value): 保存额外数据
4)Xxx getXxxExtra(String name): 获取额外数据
5)setData(Uri data): 设置有特定格式的uri数据
三、IntentFilter
1、IntentFilter的理解
1)在配置Activity时, 可以为Activity指定一个IntentFilter的配置
2)如果你的Activity希望其它应用能访问到, 需要配置<intent-filter>
3)如果你想启动其它应用的界面你必须用隐式intent, 且目标界面Activty配置了<intent-filter>
4)它的作用类似于web中的为Servlet配置的<url-pattern>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>//配置IntentFilter
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity//配置Activity
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
</activity>
</application>
Activity实例(通过界面一启动界面二)
public class MainActivity extends Activity implements OnClickListener {
//定义视图对象
private EditText edtext;
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化视图
edtext = (EditText)findViewById(R.id.edtext);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
//设置监听
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {//v就是发生事件的视图对象(操作)
if(v==btn1){
//得到intent对象
Intent intent = new Intent(this,SecondActivity.class);
//同过intent携带额外数据
String message = edtext.getText().toString();
intent.putExtra("MESSAGE",message);
//启动activity
startActivity(intent);
}else if(v==btn2){
//得到intent对象(显示)
Intent intent = new Intent(this,SecondActivity.class);
//通过intent携带额外数据
String message = edtext.getText().toString();
intent.putExtra("MESSAGE",message);
//带回调启动Activity
int requestCode = 1;//请求码
startActivityForResult(intent, requestCode);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//判断Code
if(requestCode==1 && resultCode==2){
//从data中取出数据
String result = data.getStringExtra("RESULT");
//显示数据
edtext.setText(result);
}
}
}
public class SecondActivity extends Activity {
//定义视图对象
private EditText second_edtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//初始化视图对象
second_edtext=(EditText)findViewById(R.id.second_edtext);
//获取意图
Intent intent = getIntent();
//获取intent携带的参数
String message = intent.getStringExtra("MESSAGE");
second_edtext.setText(message) ;
}
public void back1(View v){
//关闭当前界面
finish();
}
public void back2(View v){
//保存一个结果
int resultCode = 2;//结果码
//准备一个额外数据的intent对象
Intent data = new Intent();
String result = second_edtext.getText().toString();
data.putExtra("RESULT", result);
//设置结果
setResult(resultCode,data);
//关闭当前界面
finish();
}
}


程序效果(一般返回)


带参返回



来源:https://www.cnblogs.com/rivercast/p/6073497.html