该工具已经上传至我的框架SKFramework中的开发工具箱,如图所示。...调整活动范围,如图所示,绿色线条形成的区域即活动的范围,相机运动不会超出该区域: 7.闲置时绕视角中心旋转 当用户在一定的时长内没有任何操作时,进入闲置状态,相机自动绕视角中心旋转,该功能通过启用enableAutoIdle...为true时起作用 yMinValue、yMaxValue:在y轴上的活动区域范围,当isRangeClamped为true时起作用 zMinValue、zMaxValue:在z轴上的活动区域范围,当isRangeClamped...为true时起作用 translateSpeed:平移的速度 boost:加速系数,当按下键盘左边的Shift键时会加速移动 positionLerpTime:坐标插值到目标值所需时长 rotationLerpTime...:当用户在该时长内没有任何操作时,进入闲置状态,相机自动绕视角中心旋转,当enableAutoIdle为true时起作用 idleRotateSpeed:处于闲置状态时,绕视角中心旋转的速度
(4)内容提供者(Content Provider) 应用程序能够将它们的数据保存到文件或 SQLite 数据库中,甚至是任何有效的设备中。当需要将数据与其他的应用共享时,内容提供者将会很有用。...系统中通常有很多这样的进程在运行,因此要将这些进程保存在 LRU 列表中,以确保当内存不足时用户最近看到的进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。...运行活动的情景:当一个活动被启动时,活动中的 onCreate()、onStart()和 onResume()这 3 个方法被依次调用,活动对应的界面出现在屏幕上。...广播接收器的生命周期 广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android 将调用这个方法,并传递给包含在这个消息中的 Intent 对象。...广播接收器只有在这个方法的执行过程中才处于活动状态,当 onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。
(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。...service分为两种: (a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。...(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。...当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。...也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。
通常情况下,一个新实例的一个活动启动的过程定义的应用程序,所以活动的全部实例执行在同样的进程。...当离开该activity时它会是不可兼得,此时activity是否可以从堆栈中移除和finishi()。...假设调用者startActivity()或startActivityForResult()没有被授予指定的许可,其意图将不会交付活动。...“splitActionBarWhenNarrow”加入栏位于屏幕的底部。在动作条显示操作项,当约束的水平空间。而不是少数出如今屏幕上方操作栏中的行动项目。操作栏被分成顶部导航部分和操作项的底部栏。...“stateUnchanged” 软键盘上一次保存在不论什么状态,是否可见或隐藏,当活动走到前台。 “stateHidden” 软键盘是隐藏的,当用户选择activity时。
(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。...service分为两种: (a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。...(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。...当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。...静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。
Android 应用中每一个 Activity 都必须要在 AndroidManifest.xml 配置文件中声明,否则系统将不识别也不执行该Activity。...详细的进程优先级划分如下: 前台进程:应用程序存在Activity正位于前台,可见并可控 可见进程:应用程序存在Activity处于局部可见状态,即局部可见却不可控 服务进程:应用程序存在正在运行的...在 Android 系统中,广播体现在方方面面,例如:当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作...) 静态注册时无需担忧广播接收者是否被关闭,只要设备是开启状态,广播接收者也是打开着的。也就是说哪怕 app 本身未启动,该 app 订阅的广播在触发时也会对它起作用。...A 得到广播后,可以往广播里存入数据,当广播传给 B 时,B可以从广播中得到 A 存入的数据 总结: 当广播为有序广播时: 优先级高的先接收 同优先级的广播接收器,动态优先于静态 同优先级的同类广播接收器
2.2.1 四种状态 1.Active/Running——活动状态 当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个...Activity 处于活动(Active)或运行 (Running)状态 2.Paused——暂停状态 当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast...暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉 3.Stopped——停止状态 完全被另一个Activity遮挡时处于停止状态...只是对用户不可见,当其他地方需要内存时它往往被系统杀掉 4.Dead——非活动状态 Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity...2.不可见(处于Stopped状态的)Activity 3.Service进程(除非真的没有内存可用时会被销毁) 4.非活动的可见的(Paused状态的)Activity
如果 Observer 的 Lifecycle 处于 STARTED 或 RESUMED 状态,LiveData 会认为 Observer 处于活动状态。...3 个重要部分: onActive():当 LiveData 有一个处于活动状态的观察者时该方法被调用,这意味着需要开始从设备观察位置更新。...vonInactive():当 LiveData 没有任何处于活动状态的观察者时该方法被调用。由于没有观察者在监听,所以没有理由保持与 LocationManager 的连接。...,以便只有当它们中的任何一个可见(即处于活动状态)时才连接到系统服务。...postalCode 被定义为 addressInput 的转换,所以当 addressInput 改变时,如果有处于活动状态的观察者,repository.getPostCode() 将会被调用。
pytest-twisted: 编写测试 twisted 应用程序,启动一个反应器,处理测试功能的延迟。...在测试模块中加载插件 您可以在conftest文件中 使用 pytest_plugins : pytest_plugins = ("myapp.testsupport.myplugin",) 当加载测试模块或...ConfTest插件时,也将加载指定的插件。...找出哪些插件处于活动状态 如果您想知道哪些插件在您的环境中处于活动状态,可以键入: pytest --trace-config 将得到一个扩展的测试头,显示激活的插件及其名称。...它还将打印本地插件 conftest.py 文件加载时 按名称停用/注销插件 您可以阻止插件加载或注销它们: pytest -p no:NAME 这意味着任何后续的激活/加载命名插件的尝试都将不起作用。
磁场传感器 磁场感应器主要读取设备周围的磁场强度。即便是设备周围没有任何直接的磁场,设备也会始终处于地球的磁场中,除非你不在地球。。...我们将在本教程中创建的应用程序将不适用于缺少接近传感器和陀螺仪的设备。...然而,陀螺仪具有两个:游戏旋转矢量传感器和旋转矢量传感器。在本教程中,我们将仅关注后者。 在上一步的例子中,我们每次沿着Z轴的角速度顺时针或逆时针方向大于0.5rad / s时,改变了活动的背景颜色。...例如,我们可以将其沿着Z轴的旋转度大于45°时变为黄色,当其旋转在-10°和10°之间时为白色,当旋转小于-45°时,它们为蓝色。...结论 在本教程中,您学习了如何使用Android的传感器框架来创建可以响应接近传感器和陀螺仪生成的数据的应用程序。您还学习了如何使用旋转矢量传感器,这是陀螺仪更受欢迎的替代品。
从上图可以看出,先加入任务栈中的Activity会处于容器下面,后加入的处于容器上面,而从任务栈中取出Activity 出的是最底端的Activity。...03singleTask模式 如果希望Activity在整个应用程序中只存在 一个实例,可以使用singleTask模式,当Activity 的启动模式指定为singleTask,每次启动该Activity...时,系统首先会检查栈中是否存在该活动的实例,如果发现已经存在则直接使用该实例, 并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。...Affinity属性在以下2种情况下起作用: 当启动 Activity的Intent对象包含FLAG_ACTIVITY_NEW_TASK标记时,系统会为需要启动的Activity寻找与当前Activity...当它设置为true时,当前的Activity只在当前会话期间作为Task的一部分存在, 当用户退出Activity再返回时,它将不存在。
表现形式:当设备没有连接到电源,设备进入Doze模式时,系统将通过延迟最近用户没有使用的应用程序的后台CPU运作及网络活动,让应用程序处于App Standby状态,以此来减少电池消耗。...谷歌表示,在Nexus5和Nexus6上测试,当屏幕处于关闭状态,平均续航时间提高30%; 3. 版本要求:Android6.0(API level 23)及其更高版本; 4....Doze模式的五种状态,分别如下: ACTIVE:手机设备处于激活活动状态 INACTIVE:屏幕关闭进入非活动状态 IDLE_PENDING:每隔30分钟让App进入等待空闲预备状态 IDLE:空闲状态...Understanding App Standby 当用户不触摸使用应用程序一段时间时,该应用程序处于App Standby状态,系统将把该App标志为空闲状态。...发送和接收下行消息: 发送一个消息,该应用程序服务器发送信息到客户端应用程序: 1.该应用程序服务器发送消息给GCM连接服务器; 2.当设备处于脱机状态,该GCM连接服务器入队并存储消息; 3.当设备联机时
它来自lifecycle-extensions的Android Jetpack库,目前 lifecycle-extensions 中的 API 已弃用。...当某个对象强引用另一个要被销毁的对象时,内存泄漏就会发生。这样的强引用会阻止垃圾回收器从内存里清理对象。设备配置改变带来的内存泄漏是常见问题。...要测试系统内存不够杀死应用,进入开发者选项,将不保留活动开启,那么在应用启动后,点击了home键,系统就是自动去杀死app了。...如图设置: 不保留活动 四、ViewModel与保存实例状态 保留实例状态和ViewModel都不是长期存储解决方案。...参考:https://developer.android.com/jetpack 六、深入学习:解决问题要彻底 意思就是通过禁止应用屏旋转,以此解决设备配置改变带来的UI状态丢失问题的方式太粗暴,也不能从根本解决问题
10、面试官:当旋转屏幕时,Activity如何响应? 11、面试官:你是如何做到旋转屏幕时防止数据重新加载和重置的? 12、面试官:说一下AsyncTasks和线程他们的区别!...当您需要一个生命周期与当前上下文分开的上下文时,或者在传递超出活动范围的上下文时,可以使用 Application Context 。 2、面试官:什么是 Armv7 ? 应聘者:我怎么知道?...如果我们以启动模式为 “ singleInstance” 再次启动 ActivityB ,则新的活动堆栈将为: 任务1 :A->B-> C 任务2 :D 10、面试官:当旋转屏幕时,Activity如何响应...15、面试官:什么是(ANR)错误,如何防止它在应用程序中发生? 应聘者:当 UI 停止响应超过5秒以上时,通常会因为已阻塞主线程而出现 ANR 对话框。...例如,当需要加载手机中很多图片并要求拿到各种信息时,如照片的尺寸等,或读取非常大的 Json 文件时候,应该放到子线程中操作,当处理完毕后,通知主线程继续执行任务!
详细的进程优先级划分如下: 前台进程:应用程序存在Activity正位于前台,可见并可控 可见进程:应用程序存在Activity处于局部可见状态,即局部可见却不可控 服务进程:应用程序存在正在运行的...需要注意的是在AndroidManifest文件中进行配置的广播接收者会随系统的启动而一直处于活跃状态,只要接收到感兴趣的广播就会触发(即使程序未运行)。...在 Android 系统中,广播体现在方方面面,例如:当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作...) 静态注册时无需担忧广播接收者是否被关闭,只要设备是开启状态,广播接收者也是打开着的。也就是说哪怕 app 本身未启动,该 app 订阅的广播在触发时也会对它起作用。...A 得到广播后,可以往广播里存入数据,当广播传给 B 时,B可以从广播中得到 A 存入的数据 总结: 当广播为有序广播时: 优先级高的先接收 同优先级的广播接收器,动态优先于静态 同优先级的同类广播接收器
D、android:debuggable 这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。...home,再从新打开,activity处于最后的状态。...比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true。 ...这个属性能影响两件事情: 【A】当有焦点产生时,软键盘是隐藏还是显示; 【B】是否减少活动主窗口大小以便腾出空间放软键盘; 各值的含义: 【A】stateUnspecified...:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置; 【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
在这种情况下,Observer被认为始终处于活动状态,因此当有数据变化时总是会被通知。 您可以调用removeObserver(Observer)方法移除这些Observer。...当你更新LiveData对象中存储的数据时,所有注册了的Observer,只要所绑定的LifecycleOwner处于活动状态,就会被触发通知。...确保Activity或Fragment一旦变为活动状态时,就有可展示的数据。 当应用程序组件处于STARTED状态,它就需从它所观察的LiveData对象中接收到最新的值。...扩展LiveData 如果Observer的生命周期处于STARTED或RESUMED状态,则LiveData将认为Observer处于活动状态。...LiveData只在他们至少一个处于可见和活跃状态时才连接到系统服务。
处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能.Android API 支持下列类型 ......当你希望显示一个对话框时, 调用showDialog(int)并将对话框的id传给它. 当一个对话框第一次被请求时,Android调用onCreateDialog(int)....如果你在onCreateDialog()中创建可选择列表, Android会自动管理列表的状态....注意: 如果你决定在onCreateDialog()方法之外创建一个对话框,它将不会被附着到活动上。...当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。
) 1、android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打开,activity处于最后的状态。...比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true 2、android:clearTaskOnLaunch 比如 P 是 activity...如果用户旋转设备这屏幕会横竖屏切换 nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了 10、android:stateNotNeeded activity被销毁或者成功重启时是否保存状态...这个属性能影响两件事情: 【A】当有焦点产生时,软键盘是隐藏还是显示 【B】是否减少活动主窗口大小以便腾出空间放软键盘 各值的含义: 【A】stateUnspecified:软键盘的状态并没有指定...,系统将选择一个合适的状态或依赖于主题的设置 【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示 【C】stateHidden