Android组件之Activity

本文详细介绍了Android中的Activity概念、生命周期、状态保存方式、启动模式及屏幕旋转的影响等内容,并提供了退出Activity和应用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是Activity?

Activity是安卓的四大组件之一,用户可以用来交互完成某项任务,例如:打电话,照相,锁屏,发邮件等等。

通过setContentView()方法设置布局。在我们常用的MVC模式中,Activity主要负责控制层(controller);


2.Activity的生命周期?

onCreat()-->onStart()-->onRestart-->onResume()-->onPause()-->onStop()-->onDestroy()


public class MySample extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}
上面七个方法代表Activity生命周期的七个阶段,当被第一次创建的时候会执行onCreat()方法,这时候还没有界面的显示,所以我们一般在这个方法里对控件创建,获取,绑定;当创建完后,会执行onStart()方法并展示给用户,这时候是可见的;
onRestart()方法是在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。 
onResume()获取到焦点,在这里就可以与组件进行交互了;onPause()可见但是失去焦点;onStop()用户界面已经不可见;onDestroy()时Activity被销毁。
3.如何保存activity的状态?
 Activity的状态通常系统会自动保存,只有当我们需要保存额外的数据时才需要使用到这样的功能。一般来说如果不destroy掉Activity,activity重新回到前台数据和状态不会消失。如果activity可能呗系统销毁我们可以复写onSaveInstanceState()方法,在它里面可以传一个Bundle,下次我们启动这个activity是就可以在onCreat()方法里获取这个对象
4.两个Activity跳转时必然会执行哪些方法?
一般情况下两个activity,分别叫做A和B,在A里面激活B,那么A会执行onPause(),B会执行onCreat(),onStart(),onResume()之后,B窗体覆盖A,A在执行onStop(),如果B是透明的A就不调用onStop方法。

5.横竖屏切换是的生命周期的次数?
不设置activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;
设置activity的android:configChanges=“orientation”时, 切屏会重新调用各个生命周期,切横屏、竖屏时都只会执行一次,但是竖屏最后多打印一条onConfigurationChanged();
设置activity的android:configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged(),横屏一次,竖屏两次;

6.Activity的四种启动模式。
singleTop和standard模式比较,singleTop当跳转的activity位于栈顶时,不会重新创建一个activity实例,而是直接跳到栈顶的那个activity实例;singleTask和singleInstance模式多只创建一个实例,在这种模式下不论跳转的对象是不是位于栈顶,都不会重新创建一个实例

7.如何推出activity?如何安全推出已调用多个activity的application?
通常推出activity只需按back键,或者finish掉就可以了

可以通过application添加打开的activity和销毁activity,代码如下:
public class MyApplication extends Application {
    private List<Activity> activityList = new LinkedList<Activity>();
    private static MyApplication application;
    public MyApplication(){
    }
    public static MyApplication getInstance(){
        if(null == application){
            application = new MyApplication();
        }
        return application;
    }
    public void addActivity(Activity activity){
        activityList.add(activity);
    }
    public void exit(){
        for(Activity a : activityList){
            a.finish();
        }
    }
}
MyApplication.getInstance().addActivity(this);每打开个Activity就掉用
}

发特定广播销毁,

递归销毁,打开新的activity使用startActivityForResult(),在onActivityResult()中处理关闭





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值