1、什么是activity
Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。
Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。 在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。 Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道。
2、activity生命周期
2.1 七个回调方法
①,onCreate() ————-> 创建
②,onStart()—————->不可见→可见
③,onResume()————>进行交互
④,oPause()—————->启动或者恢复另一个活动
⑤,onStop()—————->可见→不可见
⑥,onDestroy()————>销毁
⑦,onRestart()————->停止→运行
前六个方法成对。
2.2 四种状态
①,运行状态(栈顶,可见,可交互)
onResume()
②,暂停状态(非栈顶,仍可见,不可交互)
onpause()
③,停止状态(非栈顶,不可见,不可交互)
onStop()
④,销毁状态(出栈)
2.3 三个生存期
①,完整生存期
onCreate()和onDestroy()之间
②,可见生存期
onStart() 和 onStop()之间
③,前台生存期
onResume() 和 onPause()之间
3,Activity的启动模式
3.1 四中启动模式
standard,singleTop,singleTask,singleInstance
3.2 设置启动模式
在AndroidManifest.xml 中,
3.3 各种启动模式的特点
standard——默认启动模式,每次都会创建新实例
singleTop——在启动活动时如果发现返回栈的栈顶是该活动,则直接使用,不会创建新活动。
singleTask——每次启动该活动首先会在返回栈中检查是否存在该活动实例,若存在,则直接使用,并把该活动之上的所有活动全部出栈,若不存在,则新建活动。
singleInstance——指定为singInstance模式的活动会启用一个新的返回栈来单独管理这个活动。
4,活动的最佳实践
4.1 判断当前活动对应的是哪一个活动
①,新建BaseActivity继承自Activity;
② , 重写onCreate()方法;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getclass().getSimpleName());
}
③ , 让所有的活动都继承BaseActivity;
④ , 运行程序,进入相应活动,观察LogCat打印信息。
4.2 启动活动的最佳写法
SecondActivity:
public class SecondActivity extends Activity{
public static void actionStart(Context context,String data1,String data2){
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("param1",data1);
intent.putExtra("param2",data2);
context.startActivity(intent);
}
}
FirstActivity:
public class Firstctivity extends Activity{
……
button1.setOnClickListener(new OnClickListener){
@Override
public void onClick(View v){
SecondActivity.actionStart(FirstActivity.this,"data1","data2");
}
});
}