android finish后不能ondestroy_Android面试基础(一)

102e997888c21b1deb07825aa759b360.png

一.四大组件是什么

Android 四大组件是Activity、Service、BroadcastReceive、ContentProvider

Activity

直接与用户交互的组件

周期:onCreate=>onStart=>onResume=>onPaused=>onStop=>onDestroy

启动模式: standard、singleTop、singleTask、singleInstance

1. 横竖屏切换生命周期不重启 设置android:configChanges

2.数据恢复

onSaveInstanceState-->onStop-->

onStart-->onRestoreInstanceState-->

Service

服务是运行在后台的组件,无需与用户进行交互

启动方式:

1.StartService: onCreate=>onStartCommand=>onDestroy

启动它的组件无关联,销毁需调用stopSelf或stopService

2.bindService: onCreate=>onBind=>onUnbind=>onDestroy

与启动组件绑定,所有绑定组件销毁后执行完unBind才会销毁

注:它本身还运行在主线程中,所以耗时逻辑仍需工作线程去完成

BroadcastReceive

广播用来在应用程序之间传播信息的机制

动态注册:registerReceive 注册组件销毁后,广播失效 unRegisterReceiver解除

静态注册:manifest中注册 安装时就会被系统解析一直起作用

普通广播

通过Context.sendBroadcast()方法来发送。它是完全异步的,所有的receivers接收器的执行顺序不确定 这种方式效率更高

有序广播

通过Context.sendOrderedBroadcast来发送。所有的receiver依次执行,使用android:priority属性设置优先级,优先级高的先收到该广播并且可以丢弃该广播,使该广播不再往下发送

ContentProvider

为应用提供数据共享,不用关注储存方式

ContentProvider(内容提供者)

ContentResolver(内容解析者)

ContentObserver(内容观察者)

1、创建自己的数据列表;
2、自定义ContentProvider实现相关的抽象方法;
3、在AndroidManifest中声明provider以及定义相关访问权限;
4 、通过ContentResolver根据URI进行增删改查;

二.Activity之间的通信方式

1.Intent

2.借助静态数据实现

3.借助全局变量来实现/Application

4.通过Service

5.借助外部存储

a.SharedPreference SharedPreference是存放在data/data/应用包名/shared_prefs目录下后缀为.xml的文件

b.SQLite SQLite是存放在data/data/应用包名/databases目录下的后缀为.db3的文件

c.File

三.Activity各种情况下的生命周期

正常

正常启动: onCreate=>onStart=>onResume

返回键退出:onPause=>onStop=>onDestroy

按home键

正常启动: onCreate=>onStart=>onResume

按home: onPause=>onStop

正常启动: onRestart=>onStart=>onResume

横竖屏切换

正常启动: onCreate=>onStart=>onResume

横竖屏切换:onPause=>onStop=>onDestroy=>onCreate=>onStart=>onResume

设置configChanges

正常启动: onCreate=>onStart=>onResume

横竖屏切换:onConfigurationChanged

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值