android finish后不能ondestroy_Android面试基础(一)
一.四大组件是什么
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
android finish后不能ondestroy_Android面试基础(一)相关推荐
- androID程序!BAT大厂面试基础题集合,附带学习经验
没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...
- Android面试基础一
Android面试基础二-原理及常见问题 目录 1.四大组件 1)Activity 2)Service 3)ContentProvider 4)Broadcast Receiver 2.四大组件的生命 ...
- Android 面试基础
最近很多小伙伴又在找工作了,汇总一些面试基础题,希望对大家有帮助. 1. 请描述一下Activity 生命周期. 共有七个周期函数,按顺序分别是: onCreate(), onStart(), onR ...
- Android面试基础之BroadcastReceiver详解(斗帝养成系列四)
斗帝养成 大斗师,一至九星,斗气铠甲,斗气外放,聚气化固态,呈菱形.别说自己尽力了,那只是自欺欺人的假话. Android面试基础之Activity详解(斗帝养成系列一) Android面试基础之Se ...
- Android面试基础之ContentProvider详解(斗帝养成系列三)
斗帝养成 斗师,一至九星,斗气纱衣,聚气化液态. 我匆忙了一生,我却留不下任何东西. Android面试基础之Activity详解(斗帝养成系列一) Android面试基础之Service详解(斗帝养 ...
- 7年老Android一次操蛋的面试经历,挥泪整理面经
看到还有很多程序员连面试流程都没有彻底弄清楚,今天,我们以阿里为例,来聊聊互联网大厂的面试流程和过程! 本篇主要还是聊聊社招的面试过程!阿里以及其他的互联网大厂的技术类社招面试,通常情况是 4 个轮次 ...
- 7年老Android一次操蛋的面试经历,灵魂拷问
前言 说不焦虑其实是假的,因为无论是现在还是最近几年,很早就有人察觉Android开发的野蛮生长时代已经过去.过去的优势是市场需要,这个技术少有人有,所以在抢占市场的时候,基本上满足需要就已经可以了. ...
- 30岁了还去面试基础岗位,是不是很失败?
30岁了还去面试基础岗位,是不是很失败? 文 | 洪生鹏 01 之前有位读者和我分享了他的一段职场经历: 张工是一名移动开发程序员,七年开发经验,三年服务端开发经验,4年移动开发经验.前段时间去面试A ...
- 四、Android学习第四天——JAVA基础回顾(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天--JAVA基础回顾 这才学习Android的 ...
最新文章
- LeetCode : Valid Parentheses
- python 序列化_python之序列化
- 第13/24周 统计信息
- jzoj4020-Revolution【网络流,最小割】
- C++PrimerPlus学习——第六章编程练习
- 官网下载的mysql密码忘了怎么办_MySQL密码忘了怎么办?MySQL重置root密码方法
- bz 1029: [JSOI2007]建筑抢修
- javascript实现的自适应宽度的瀑布流
- 游戏开发之C++类和对象相关概念实例(C++)
- 阅读SSM项目之scm
- F28335的ADC采集电压不对(ADC采集模块的输入信号的两个端子是:正极:ADCINAx ,负极是:ADCL0)
- 通往诺贝尔奖之路:盘点10个著名的科学家族
- 简述igp和egp_igp egp
- 分享一个在线去水印网站
- 【Nginx】关于二级域名配置https
- 西藏计算机一级,西藏计算机等级考试级别
- AI工具是帮手还是助手:
- java 搭建ota服务器_OTA配置服务器
- Neuromation新研究:利用卷积神经网络进行儿童骨龄评估
- 【调剂】郑州大学河南先进技术研究院2022年硕士研究生招生拟调剂信息公告
热门文章
- 【nexus】nexus : mac 安装 nexus
- 08-R包那么多,怎么才能快速找到自己需要的包呢?
- spark学习-Spark的mapPartitions与MapPartitionsWithIndex理解
- java 如何捕获线程中的异常处理_如何捕获Java中另一个线程抛出的异常?
- 太牛了!分享一个Github上都没有的“网约车”项目!!!
- 错误记录( 六)tomcat 配置图片虚拟路径不起作用
- java ee 员工管理系统,fb3492 javaEE_原生Servlet_MySql企业员工信息管理系统的设计与实现,java源码含论文与答辩PPT...
- spring配置文件最全约束
- 最优化设置mysql的max_connections
- Unix Tutorial Four