**
安卓四大组件之Activity
**
1.介绍
**
Activity的出现无处不在,从手机开始启动的第一个页面的都是Activity。主要用于可见的状态与用户进行交互。好比一张纸,我们需要用代码这只“笔”来描绘一些信息告诉读者,这张纸里面有些什么内容和需要操作什么东西。总的来说就是能看到的基本上和Activity。如果有什么错误的地方,希望大家指出。感激不尽。
既然作为操作系统的组件,那么每个组件都会有独立的生命周期。
**
2. 生命周期
**
在Android的官方文档我们能够看到这样的一张图片:
简单看做是,系统会调用如下几个方法。
OnCreate()–>OnStart()–>OnResume()–>OnPause()–>OnStop()–>OnDestroy()
Activity拥有四种基本状态
1*.Active/Running*
一个Activity启动入栈(装载Activity的容器),有先进先出的特点。它会显示屏幕的最前端(Activity栈顶)此时它是处于和用户交互的激活状态,叫做活动状态或者运行状态
2. Paused
暂停状态,被一个新的非全屏的Activity或者一个透明的Activity被放到栈顶,比如你用手机浏览网页的时候,突然来了一个电话,那么这个activity就是处于paused的状态,但是它依然是保持活力的。
3. Stopped
停止状态,如果一个activity完全为另一个Activity完全覆盖,它不可见,所以它的窗口被隐藏,当系统内存吃紧的时候,停止状态的Activity会被强行终止掉
4. Killed
杀死状态,顾名思义,被系统回收,意味着系统内存吃紧的时候,或者你不需要用这个Activity的时候,系统会直接终止它的进程。
好了。那么系统是如何运作Activity的呢 ?
那就是上面我们说的几个方法了。
当我们首次使用ADT/Android studio创建安卓工程的时候,我们创建一个工程的时候都会默认创建一个OnCreate方法并调用它。
我们点击运行的时候,那么就会弹出Hello world。
那我们添加剩余的方法.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
Log.i("dd","onStart");
super.onStart();
}
@Override
protected void onPause() {
Log.i("dd","onPause");
super.onPause();
}
@Override
protected void onResume() {
Log.i("dd","onResume");
super.onResume();
}
@Override
protected void onStop() {
Log.i("dd","onStop");
super.onStop();
}
@Override
protected void onDestroy() {
Log.i("dd","onDestroy");
super.onDestroy();
}
}
当我按下返回这个按钮的时候,退出到主界面。
但是当我按下,Home这个按钮的时候,
这次并没有销毁,而是在后台运行着。运行onPause和onStop这两个方法,
当我点回去的时候发现,
继续运行onStart()和onResume()方法。最后不用的时候会自动销毁,运行onDestroy()
3.如何启动一个Activity?
要启动一个Activity用到的就是Intent这个类,我们先创建一个MyActivity类并在Manifest文件里注册
public class MyActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
然后通过Intent 创建一个对象,在Intent构造方法中分别传入,Context,还有对应想跳转另一个的Activity的类就行了。最后调用startActivity()将Intent的对象传进去就行了。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this,MyActivity.class);
startActivity(intent);
}