Activity
从视觉效果看:是一个活动窗口。
从外部看,Activity 就是一个图形界面,通俗点说就是在android 的应用中所看到的用户界面都是一个Activity或者说是Activity的表现。
从内部来看,Activity就是view 的容器,负责把放在其中的组件按照一定的组织进行表现和处理。
实现上只需要继承Activity和AppCompatActivity。
Activity的创建流程:
- 自定义Activity的类名,继承Activity或它的子类
class MyActivity extends Activity{}
- 重写onCreate()方法,在此方法中调setContentView(),设置要显示的视图。
public void onCreate(Bundle savedInstanseState){
super.onCreate(savedInstanseState);
setContentView(R.layout.main);
- 在AndroidManifest.xml中对Activity进行配置
<activity
android:icon = "图标"
android:name = "类名"
android:label = "Activity要显示的标题"
android:theme = "要应用的主题">
</activity>
- 启动Activity:掉用startActivity(Intent);
Intent it = new Intent(MainActivity.this,MyActivity.class);
startActivity(it);
- 关闭Activity:调用finish,直接关闭当前Activity
finish();
启动Activity的方式
显示启动:
- 最常见的:
startActivity(new Intent(MainActivity.this,MyActivity.class);
- 通过Intent的ComponentName
ComponentName cn = new ComponentName(MainActivity.this,MyActivity.class);
Intent intent = new Intent();
intent.setComponent(cn);
startActivity(intent);
- 初始化Intent时指定包名
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName(MainActivity.this,MyActivity.class);
startActivity(intent);
隐式启动
通过Intent-filter的Action.Category或data来实现
<intent-filter>
<action android:name="com.xxx.action.START_SECOND_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
退出Activity的方式
finish();
Activity生命周期
回调 | 描述 |
---|---|
onCreate() | 这是第一个回调,在活动第一次创建时使用 |
onStart() | 这个回调在活动为用户可见时调用 |
onResume() | 这个回调在应用程序与用户开始可交互时调用 |
onPause() | 被暂停的活动无法接受用户输入,不能执行任何代码,当前活动要被暂停,上一个活动将要被恢复时调用 |
onStop() | 当活动在不可见时调用 |
onDestroy() | 当活动即将被系统销毁之前调用 |
onRestart | 当活动被停止以后重新打开时调用 |
Activity之间利用Intent进行数据传递
- 将数据封装进Intent对象,然后利用startActivityForResult或startActivity将数据从A传输至B
- B执行完操作之后将A所需要的返回数据封装在Intent中,利用setResult再传递回A中。
- A利用onActivityResult回调接受B返回的数据做后续处理
Intent可以传递:简单数据类型及数组、实现序列化接口的类、Bundle
在Activity中传递数据的方式:
- 通过Intent进行传递,可以传递基本数据类型、Bundle打包数据、序列化的自定义对象。
- 通过全局变量直接设值
- 通过静态变量直接设值
- 通过SharePreference将对象储到本地,进行存取。
数据存储:Shareperferences
Android平台用于存储轻量级数据的存储方式,以键值对(key-value)的方式来进行存储,本质上是一个xml文件。
存:
- 通过Context,获取SharedPreferences对象;
- 创建SharedPreferences.Editor对象
- 写入数据并执行commit操作
SharedPerferences sharedPreferences = getSharedPreferences("sptest",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name","名字");
editor.commit();
取:
- 通过上面获取到的SharedPerferences,执行getString方法即可;
SharedPreferences sharedPreferences = getSharedPerferences("sptest",MODE_PRIVATE);
String name = sharedPerferences.getString("name","默认值");