Activity简介
Activity是四大组件之一,一个App可以有0个或多个Activity
它是一个用来展示用户界面以及与用户进行交互操作的组件当在一个Activity中按下返回时,Android OS会自动销毁Activity对象
当在一个Activity中启动另外一个Activity时,当前Activity不会被销毁,而是会被压入Activity栈中
Activity跳转的其他Activity可以不是当前Application中的Activity
Activity的创建
1、自定义类,继承Activity
2、复写onCreate方法,并使用setContentView方法设置显示内容
3、在AndroidManifest.xml文件中注册Activity
注意: 以下方式来指定APP默认启动的Activity
<intent-filter>
<action android:name=“android.intent.action.MAIN”/>
<category android:name=“android.intent.category.LAUNCHER” />
</intent-filter>
Activity的跳转
通过Context.startActivity(Intent)的方法可以由一个页面跳转到指定页面
Intent意图,四大组件的粘合剂
显式Intent :
创建Intent时,已经明确需要启动哪一个具体的Activity
Intent intent = new Intent (Context context, Class destination);
startActivity(intent);
Intent intent = new Intent (String packageName, String className);
startActivity(intent);
隐式Intent:
创建的Intent,不知道具体是哪一个Activity,由Android OS根据action和category进行过滤查找
Intent intent = new Intent (“eye_of_skadi”);
startActivity(intent);
Activity之间的传值(Activity之间的通信)
1、使用Application实现数据共享
自定义一个Application类作为一个单例,并继承Application,源Activity和目标Activity共享其中的数据。
在AndroidManifest文件中的<application>下设置name="自定义Application名字"
2、使用Intent将值传递给Activity
使用Intent的putExtra(String name,String value),其中的值还可以是八种基本数据类型,数组,集合,对象
Activity之间的回传值
通过startActivityForResult()方式启动的目标Activity可以给源Activity返回值
1、源Activity.startActivityForResult(intent, requestCode);
2、目标Activity通过setResult给源Activity设置返回值,然后finish();
3、源Activity中,通过onActivityResult方法处理返回值
Activity生命周期
onCreate 创建Activity时被调用
onRestart Activity被重新显示时被调用
onStart 显示Activity时被调用
onResume Activity获取焦点时被调用(用户可以与Activity交互)
onPause Activity失去焦点时被调用
onStop Activity不可见时被调用
onDestroy Activity销毁时被调用
Activity声明周期总结
ActivityA -> ActivityB ->返回到ActivityA
1、ActivityB将ActivityA覆盖
A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop
按下返回键后-> B:onPause ->A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy
2、ActivityB没有将ActivityA覆盖
A:onPause -> B:onCreate -> B:onStart -> B:onResume ->
按下返回键后 B:onPause -> A:onResume -> B:onStop -> B:onDestroy