Android学习杂记-Activity基础知识
本文摘录自Tekkaman博客。
【Activity介绍】
一个Activity是一个应用程序组件,提供一个屏幕,方便和用户实现交互。每一个activity被给予一个窗口,在上面可以绘制用户接口。在一个Activity创建时,其实现的onCreate(Bundle savedInstanceState)方法将被系统回调,通常在这个方法里调用setContentView(View view)方法加载显示布局文件UI,并利用findViewById方法获取布局UI中的控件,对其修改数据或填充数据。
【Activity生命周期】
一个应用程序通常由多个activity组成,在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。
Activity有四种本质区别的状态:
1. 在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态
2. 如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity在系统内存极端低下的时候将被杀掉。
3. 如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
4. 如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
Activity生命周期的几个过程:
1. 启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2. 当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3. 当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4. 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5. 用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6. 当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7. 用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
【创建Activity】
继承Activity类及其子类,实现onCreate方法(还有onPause等)
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mybtn = (Button) findViewById(R.id.mybtn); } }
【在manifest文件声明你的activity】
//应用程序首次启动的Activity
<activity android:name="com.***.activity.MainActivity" >
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
//其他Activity <activity android:name="com.***.activity.OtherActivity" ></activity>
【启动一个Activity】
最简单的方法:
Intent intent = new Intent(MainActivity.this, OtherActivity.class); startActivity(intent);