标签搜索

Activity

Pop.Kite
2021-07-12 / 0 评论 / 163 阅读 / 正在检测是否收录...

Activity是用户可以看见的所有内容的载体,主要用于内容显示、用户交互。

生命周期

生命周期.PNG

图中每个直角矩形内都是Activity中可以使用的回调函数。

  1. onCreate():是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。它本身的作用是进行Activity的一些初始化工作,比如使用setContentView()加载布局,对一些控件和变量进行初始化等。但也有很多人将很多与初始化无关的代码放在这,其实这是不规范的。此时Activity还在后台,不可见。所以动画不应该在这里初始化,因为看不到。
  2. onStart():这是Activity生命周期的第二个方法。此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。其实将Activity的初始化工作放在这也没有什么问题,放onCreate中是由于官方推荐的以及我们开发的习惯。
  3. onResume():这名字和它的职责也相同。此时Activity经过前两个阶段的初始化已经蓄势待发。Activity在这个阶段已经出现在前台并且可见了。
  4. onPause():当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。此时Activity在前台并可见,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当前Activity执行完了onPause方法后,另一个Activity才会启动,而且android中指定如果onPause在0.5秒内没有执行完毕的话就会强制关闭Activity。从生命周期图中发现可以在这快速重启,但这种情况其实很罕见,比如用户切到下一个Activity的途中按back键快速得切回来。
  5. onStop():此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。
  6. onDestory():这个阶段Activity被销毁,不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。
  7. onRestart():Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。这里一般不做什么操作。
    Activity中的方法大都是两两对应的,只有onRestart方法散发着单身狗的清香。
    参考博客

基本用法

好像没啥可说的

跳转

Activity之间的跳转使用Intent,使用Intent切换Activity分为显式Intent和隐式Intent

显式Intent

显示指定要跳转的Activity的类名

Intent intent=new Intent(当前Activity,将要跳转的Activity);   
startActivity(intent);

Intent intent=new  Intent();
intent.setClass(当前Activity,将要跳转的Activity);    (intent.setClass(MainActivity.this,shoyeActivity.class);)
startActivity(intent);

Intent intent=new  Intent();
intent.setClassName(this,“将要跳转界面的名字”);
startActivity(intent);

Intent intent=new  Intent();
intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));
startActivity(intent);

隐式Intent

使用隐式Intent跳转Activity需要在AndroidManifest.xml中设置Activity的action、category、data,如:

<activity
android:name="com.saiermeng.intent.SecondActivity"
android:label="@string/title_activity_second" >
<intent-filter >
    <action android:name="com.saiermeng.intent.open"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

然后在Intent的实例中执行setAction(),addCategory()添加对应的信息即可:

Intent intent = new Intent();
intent.setAction("com.saiermeng.intent.open");
intent.addCategory("android.intent.category.DEFAULT");
startActivity(intent);

参考博客

启动模式

Activity的几种启动模式
Activity的启动模式
官方文档
参考博客

6

评论 (0)

取消