关于Intent(意图)
意图可以启动activity,service和broadcast
意图可以携带参数进行跳转
意图分为显式意图和隐式意图
意图可以设置action, category等属性
用来启动其他新的Activity。
作为传递数据和事件的桥梁。
Intent的分类
————————————————————————————————————————————————————
Activity的生命周期以及调用时机
Oncreate(创建) :创建activity第一个被调用的方法,用来对Activity初始化 |
Onstart(激活):activity变为在屏幕上对用户可见时调用,显示即调用 |
Onresume(恢复):activity开始与用户交互时调用(启动,重新启动。本方法都调用) |
Onpause(暂停):activity被暂停或收回CPU和其他资源时调用,用于保存活动状态,保护现场,一般用来保存数据或者释放占用的资源。 |
Onstop(停止):activity被停止并转为不可见阶段时调用 |
Onrestart(重启):重启时调用。本活动仍在栈中,从停止状态转换为活动状态之前被调用。 |
Ondestroy(销毁):被完全从系统内存中移除时候调用 |
简单介绍Activity的生命周期四种状态
答:1、Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 |
2、Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。 |
3、Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。 |
4、Killed状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是 |
Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。 |
————————————————————————————————————————————————————
测试用例:
1.界面从死亡-->运行
创建对象-->onCreate()-->onStart() -->onResume()-->可见可操作(运行状态)
2.界面从 运行-->死亡
onPause()-->onStart() -->onDestroy()-->Activity对象成为垃圾对象(死亡状态)
3.界面从 运行-->停止
onPause()-->onStart()
4.界面从 停止-->运行
onRestart()-->onStart()-->onResume()
5.界面从 运行-->暂停
onPause()
6.界面从 暂停-->运行
onResume()
match_parent 填充父窗体
wrap_content 包裹内容
hint属性: 提示信息
android:id="@+id/et_main_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/tips"
//初始化视图对象
et_main_msg=(EditText) findViewById(R.id.et_main_msg);
btn_main_start1=(Button) findViewById(R.id.btn_main_start1);
btn_main_start2=(Button) findViewById(R.id.btn_main_start2);
//设置点击监听
btn_main_start1.setOnClickListener(this);
btn_main_start2.setOnClickListener(this);
public void onClick(View v){//v 就是发生的事件 (用户操作的)视图对象
if (v==btn_main_start1){
// Toast.makeText(this, "一般启动", Toast.LENGTH_SHORT).show();
//1.创建Intent对象(显示)
Intent intent = new Intent(this,SecondActivity.class);
//2 通过Intent携带额外数据 trim 去首尾空格
String message = et_main_msg.getText().toString().trim();
intent.putExtra("MSG", message); // map保存
//3.启动Activity
startActivity(intent);
}else if(v==btn_main_start2){
// Toast.makeText(this, "带回调启动", Toast.LENGTH_SHORT).show();
//1.创建Intent对象(显示)
Intent intent = new Intent(this,SecondActivity.class);
//2 通过Intent携带额外数据 trim 去首尾空格
String message = et_main_msg.getText().toString().trim();
intent.putExtra("MSG", message); // map保存
//3.带回调的启动Activity
int requestCode=2;
startActivityForResult(intent, requestCode);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//判断Code 请求码 结果码
if (requestCode==2 && resultCode==3 ){
//从data中取出数据
String result = data.getStringExtra("RESULT");
//显示
et_main_msg.setText(result);
}
}
//界面二
public class SecondActivity extends Activity{
private EditText et_second_msg;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//4.得到Intent对象
Intent intent = getIntent();
//5.读取数据
String message = intent.getStringExtra("MSG");
//6.显示到EditText中
et_second_msg.setText(message);
}
public void back1(View v){
/关闭当前界面
finish();
}
public void back2(View v){
//保存一个结果
int resultCode =3;
//准备一个携带额外数据的Intent对象
Intent data= new Intent();
String result = et_second_msg.getText().toString().trim();
data.putExtra("RESULT", result);
//设置结果
setResult(resultCode, data);
//关闭当前界面
finish();
}
}
———————————————————————————————————————————————
Servlet的理解
组件的特点
————————————————————————————————————————————————————
Actvity的定义
类比Activity与Servlet
————————————————————————————————————————————————————
IntentFilter的理解
在配置Activity时, 可以为Activity指定一个IntentFilter的配置
如果你的Activity希望其它应用能访问到, 需要配置<intent-filter>
如果你想启动其它应用的界面你必须用隐式intent,且目标界面Activty配置了<intent-filter>
它的作用类似于web中的为Servlet配置的<url-pattern>
————————————————————————————————————————————————————
相关API
Intent(Context packageContext,Class<?> cls) : 用于创 建显示意图对象
Intent(String action):用于创建隐式意图对象
putExtra(String name, Xxx value):保存额外数据
Xxx getXxxExtra(String name):获取额外数据
setData(Uri data):设置有特定格式的uri数据
•Activity:活动
startActivity(Intent intent):一般启动Activity
startActivityForResult(int reqCode, Intent intent):带回调启动Activity
onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
setResult(int resultCode, Intent data):设置要返回的结果
finish():结束当前Activity
getIntent():得到启动Activity的意图
onCreate()
onStart()
onResume()
onPause()
onRestart()
onStop()
onDestory()
setOnClickListener(OnClickListener listener):设置点击监听
setOnLongClickListener(OnLongListener listener):设置长按监听
static SmsManager getDefault() :得到当前对象
sendTextMessage(...):发送短信
view.setOnClickListener(OnClickListenerlistener);
layout中: android:onclick=“方法名”
Activity中: public void 方法名(Viewv) { }
编写Activity的基本步骤
1. 定义Activity类的子类SecondActivity
2. 在AndroidManifest.xml配置定义的组件
3. 定义布局文件activity_second.xml
4. 重写Activity的onCreate(), 加载布局文件