作者:Focusing
链接:https://juejin.im/post/5c8211fee51d453a136e36b0
参考解答:
在正常情况下,Activity的常用生命周期就只有如下7个
延伸:
从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用;
从Activity是否可见来说,onStart和onStop是配对的,这两个方法可能被调用多次;
从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次;
除了这种区别,在实际使用中没有其他明显区别;
参考解答:
Activity A 启动另一个Activity B,回调如下
参考解答:
发生条件:异常情况下 (系统配置发生改变时导致Activity被杀死并重新创建、资源内存不足导致低优先级的Activity被杀死)
推荐文章:
官方文档:
https://developer.android.com/training/basics/activity-lifecycle/recreating.html?hl=zh-cn
参考解答:
推荐文章:
官方文档:
https://developer.android.com/training/basics/activity-lifecycle/recreating.html?hl=zh-cn
参考解答:
推荐文章:
官方文档:
https://developer.android.com/training/basics/activity-lifecycle/recreating.html?hl=zh-cn
参考解答:
延伸:
推荐文章:
Activity、View、Window的理解一篇文章就够了:
https://blog.csdn.net/zane402075316/article/details/69822438
参考解答:
推荐文章:
Android 横竖屏切换加载不同的布局:
https://blog.csdn.net/u010365819/article/details/76618443
参考解答:
在保证有权限访问的情况下,通过隐式Intent进行目标Activity的IntentFilter匹配,原则是:
推荐文章:
action、category、data的具体匹配规则:
https://blog.csdn.net/weixin_40877822/article/details/86130397
参考解答:
推荐文章:
Android四大组件启动机制之Activity启动过程:
https://blog.csdn.net/qq_30379689/article/details/79611217
参考解答:
Fragment从创建到销毁整个生命周期中涉及到的方法依次为:onAttach()→onCreate()→ onCreateView()→onActivityCreated()→onStart()→onResume()→onPause()→onStop()→onDestroyView()→onDestroy()→onDetach(),其中和Activity有不少名称相同作用相似的方法,而不同的方法有:
推荐文章:
Android之Fragment优点:
https://www.cnblogs.com/shaweng/p/3918985.html
参考解答:
参考解答:
参考解答:
参考解答:
参考解答:
Service的生命周期涉及到六大方法
推荐文章:
Android组件系列----Android Service组件深入解析:
https://www.cnblogs.com/qianguyihao/p/4070518.html
参考解答:
Service的两种启动模式
推荐文章:
Android Service两种启动方式详解:
https://www.jianshu.com/p/4c798c91a613
参考解答:
参考解答:
Service默认并不会运行在子线程中,也不运行在一个独立的进程中,它同样执行在主线程中(UI线程)。换句话说,不要在Service里执行耗时操作,除非手动打开一个子线程,否则有可能出现主线程被阻塞(ANR)的情况;
参考解答:
ActivityManagerService是Android中最核心的服务 , 主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块类似;
推荐文章:
ActivityManagerService分析——AMS启动流程:
https://blog.csdn.net/caohang103215/article/details/79597260
参考解答:
推荐文章:
Android四大组件:BroadcastReceiver史上最全面解析:
https://www.jianshu.com/p/ca3d87a4cdf3
参考解答:
推荐文章:
广播的底层实现原理:
https://www.jianshu.com/p/02085150339c
参考解答:
ContentProvider作为四大组件之一,其主要负责存储和共享数据。与文件存储、SharedPreferences存储、SQLite数据库存储这几种数据存储方法不同的是,后者保存下的数据只能被该应用程序使用,而前者可以让不同应用程序之间进行数据共享,它还可以选择只对哪一部分数据进行共享,从而保证程序中的隐私数据不会有泄漏风险。
推荐文章:
Android:关于ContentProvider的知识都在这里了!:
https://blog.csdn.net/carson_ho/article/details/76101093
参考解答:
参考解答:
参考解答:
Android平台实现数据持久存储的常见几种方式:
参考解答:
SharedPreferences是一种轻型的数据存储方式,本质是基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息,如int,String,boolean、float和long;
注意事项:
推荐文章:
史上最全面,清晰的SharedPreferences解析:
https://blog.csdn.net/geekerhw/article/details/79713068
SharedPreferences在多进程中的使用及注意事项:
http://zmywly8866.github.io/2015/09/09/sharedpreferences-in-multiprocess.html
参考解答:
参考解答:
SQLite在做CRDU操作时都默认开启了事务,然后把SQL语句翻译成对应的SQLiteStatement并调用其相应的CRUD方法,此时整个操作还是在rollback journal这个临时文件上进行,只有操作顺利完成才会更新db数据库,否则会被回滚;
参考解答:
使用SQLiteDatabase的beginTransaction方法开启一个事务,将批量操作SQL语句转化为SQLiteStatement并进行批量操作,结束后endTransaction()
参考解答:
SQLite数据库只允许增加字段而不允许修改和删除表字段,只能创建新表保留原有字段,删除原表
参考解答:
参考解答:
推荐文章:
Android developer官方文档--进程和线程:
https://developer.android.com/guide/components/processes-and-threads?hl=zh-cn
参考解答:
在AndroidMenifest中给四大组件指定属性android:process开启多进程模式
在内存允许的条件下可以开启N个进程
推荐讲解:
如何开启多进程?应用是否可以开启N个进程?:
https://github.com/qmsggg/qmsggg_BlogCollect/issues/158
参考解答:
推荐文章:
Android developer官方文档--进程和线程:
https://developer.android.com/guide/components/processes-and-threads?hl=zh-cn
参考解答:
与Linux上传统的IPC机制,比如System V,Socket相比,Binder好在哪呢?
推荐文章:
为什么 Android 要采用 Binder 作为 IPC 机制?:
https://www.zhihu.com/question/39440766
参考解答:
参考解答:
Binder框架 是基于 C/S 架构的。由一系列的组件组成,包括 Client、Server、ServiceManager、Binder驱动,其中 Client、Server、Service Manager 运行在用户空间,Binder 驱动运行在内核空间
Server&Client:服务器&客户端。在Binder驱动和Service Manager提供的基础设施上,进行Client-Server之间的通信。
ServiceManager(如同DNS域名服务器)服务的管理者,将Binder名字转换为Client中对该Binder的引用,使得Client可以通过Binder名字获得Server中Binder实体的引用。
Binder驱动(如同路由器):负责进程之间binder通信的建立,传递,计数管理以及数据的传递交互等底层支持。
图片出自Carson_Ho文章 —— Android跨进程通信:图文详解 Binder机制 原理
参考解答:
参考解答:
参考解答::
推荐文章:
官方文档
https://developer.android.com/reference/android/view/View
Android View的绘制流程
https://www.jianshu.com/p/5a71014e7b1b
Android应用层View绘制流程与源码分析
https://blog.csdn.net/yanbober/article/details/46128379
参考解答:
MotionEvent是手指接触屏幕后所产生的一系列事件。典型的事件类型有如下:
正常情况下,一次手指触摸屏幕的行为会触发一系列点击事件,考虑如下几种情况:
参考解答:
参考解答:
5、scrollTo()和scollBy()的区别?
参考解答:
推荐文章:
View 的滑动原理和实现方式
https://www.jianshu.com/p/a177869b0382
参考解答:
参考解答:
invalidate()与postInvalidate()都用于刷新View,主要区别是invalidate()在主线程中调用,若在子线程中使用需要配合handler;而postInvalidate()可在子线程中直接调用。
参考解答:
参考解答: