附录:练习源码https://download.csdn.net/download/m0_51152186/83607964
Activity使用
什么是Activity
Activity是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。
一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。
将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容
<application>
....
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....
</application>
在 android 中,Activity 拥有四种基本状态:
1.Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
2.Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
3.Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stop ed 状态。
4.Killed Activity 被系统杀死回收或者没有被启动时处于 Killed 状态。
如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息,同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载保留的信息,以保持原有的状态。
当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。下图说明了 Activity 在不同状态间转换的时机和条件:
生命周期
在上面的四中常有的状态之间,还有着其他的生命周期来作为不同状态之间的过度,用于在不同的状态之间进行转换,生命周期的具体说明见下
函数 |
是否可终止 |
说明 |
onCreate() |
否 |
Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。 |
onStart() |
否 |
当Activity显示在屏幕上时,该函数被调用。 |
onRestart() |
否 |
当Activity从停止状态进入活动状态前,调用该函数。 |
onResume() |
否 |
当Activity可以接受用户输入时,该函数被调用。 |
onPause() |
否 |
当Activity进入暂停状态时,该函数被调用。主要用来保存持久数据、关闭动画、释放CPU资源等。该函数中的代码必须简短,因为另一个Activity必须等待该函数执行完毕后才能显示在界面上。 |
onStop() |
是 |
当Activity不对用户可见后,该函数被调用,Activity进入停止状态。 |
onDestroy() |
是 |
在Activity被终止前,即进入非活动状态前,该函数被调用。有两种情况该函数会被调用:(1)当程序主动调用finish()函数;(2)程序被Android系统终结。 |
- Activity 的整个生命周期发生在 onCreate() 调用与 onDestroy() 调用之间。您的 Activity 应在 onCreate()中执行“全局”状态设置(例如定义布局),并释放 onDestroy()中的所有其余资源。例如,如果您的 Activity 有一个在后台运行的线程,用于从网络上下载数据,它可能会在onCreate() 中创建该线程,然后在onDestroy() 中停止该线程。
- Activity 的可见生命周期发生在 onStart() 调用与 onStop() 调用之间。在这段时间,用户可以在屏幕上看到 Activity 并与其交互。例如,当一个新 Activity 启动,并且此 Activity 不再可见时,系统会调用onStop()。您可以在调用这两个方法之间保留向用户显示 Activity 所需的资源。例如,您可以在onStart() 中注册一个 BroadcastReceiver 以监控影响 UI的变化,并在用户无法再看到您显示的内容时在 onStop()中将其取消注册。在 Activity 的整个生命周期,当 Activity 在对用户可见和隐藏两种状态中交替变化时,系统可能会多次调用 onStart() 和 onStop()。
- Activity 的前台生命周期发生在 onResume() 调用与 onPause() 调用之间。在这段时间,Activity 位于屏幕上的所有其他 Activity 之前,并具有用户输入焦点。Activity 可频繁转入和转出前台 — 例如,当设备转入休眠状态或出现对话框时,系统会调用 onPause()。由于此状态可能经常发生转变,因此这两个方法中应采用适度轻量级的代码,以避免因转变速度慢而让用户等待。
调用演示:
创建项目,代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("Activity----->>>","onCreate");
}
/**
* Activity从后台重新回到前台时被调用
*/
@Override
protected void onRestart() {
super.onRestart();
Log.e("Activity----->>>","onRestart");
}
/**
*Activity创建或者从后台重新回到前台时被调用
*/
@Override
protected void onStart() {
super.onStart();
Log.e("Activity----->>>","onStart");
}
/**
*Activity创建或者从被覆盖、后台重新回到前台时被调用
*/
@Override