Android面试四大组件基础知识点

四大组件是什么

目录

一.activity

生命周期图
这里写图片描述

1.一个Activity通常就是一个独立的窗口,Activity各种情况下的生命周期

①正常情况的生命周期
onCreate –>onStart–>onResume–>onPause–>onStop–>onDestory

②横竖屏切换的时候
如果突然旋转屏幕,由于系统配置发生了改变,在默认情况下,Activity就会被销毁并重新创建
这里写图片描述
在Activity中添加android:configChanges="orientation|keyboardHidden|screenSize"属性可以避免Activity生命周期被回调

③Activity上弹出Dialog,弹出时然后按Home键时的生命周期
Activity上弹出Dialog:onCreate–>onStart–>onResume
当启动和退出Dialog时,Activity的状态始终未变,,因为Dialog实际上时一个View,它是属于某一个Activity的,因此如果Dialog显示在当前Activity之前时不会影响到Activity的生命周期的
dialog弹出时按Home键:onPause–>onStop

整个流程如下:
这里写图片描述
④前台切换到后台,然后再回到前台,Activity生命周期回调方法。
这里写图片描述
⑤两个Activity 之间跳转
MainActivity 和 DragActivity
这里写图片描述
MainActivity 经历的周期:onCreate–>onStart–>onResume–>onPause–>onStop–>onRestart–>onStart–>onResume
DragActivity 经历的周期:onCreate–>onstart–>onResume–>onPause–>onStop–>onDestory

2.Activity之间的通信方式

startActivity

Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);

startActivityForResult

Intent intent = new Intent(getContext(), PresentManageActivity.class);
intent.putExtra(PresentManageActivity.KEY_START_NUM, mStartNum);
startActivityForResult(intent, RequestCode.REQUEST_CODE_GIFT);

LocalBroadcastReceiver

3.android应用中的每个Activity都应该在AndroidManifest.xml配件文件中声明,否则系统将不识别也不执行该Activity

4.活动被回收,Activity状态保存于恢复

Activity提供了onSaveInstanceState()回调方法,这个方法可以保证在活动回收之前被调用,
onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一些方法用于保存数据

 @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("data", "保存数据");
    }

保存的数据在onCreate()方法中可获取

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState!=null){
        String data = savedInstanceState.getString("data");
        }
 }

5.Activity的四种启动模式对比

①Standard:系统默认的启动模式,每次启动一个activity都会创建一个新的实例,不管这个实例是否存在

②SingleTop:栈顶复用模式,如果activity已经在任务栈的栈顶了,当再次启动同一个activity的时候,这个activity不会被重新创建,而且它的onNewIntent()方法会被调用
适合接受通知启动的内容页面,例如:某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。

③SingleTask:栈内复用模式,只要activity存在栈内,那么多次启动activity都不会重新创建实例,再次启动时该实例被移到栈顶,系统会调用它的onNewIntent()方法
适合做程序的入口点,例如浏览器的主界面,不管从多少个应用启动浏览器,只会启动主界面一次,其余的情况都走onNewIntent,并且会清空主界面上面的其他页面

④SingleInstance:此模式的activity只能单独位于一个任务栈中,
*适合需要与程序分离的页面
例如:闹铃提醒,将闹铃提醒与闹铃设置分离*

6.AlertDialog,popupWindow,Activity区别

二.service

1.Service 的生命周期

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值