首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android设备屏幕方向的一二事

    处理Activity的配置变更 有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生这种变化时,Android 会重启正在运行的 Activity。...重启行为旨在通过利用与新设备配置匹配的备用资源自动重新加载Activity,来帮助它适应新配置。但重启Activity并恢复大量数据不仅成本高昂,且用户体验差。...若声明由Activity自行处理配置变更,需在`AndroidManifest.xml`中activity的`configChanges`属性列出 Activity 将自行处理的配置更改。...在运行时发生配置更改时,默认情况下会关闭 Activity 然后将其重新启动,但使用该属性声明配置将阻止 Activity 重新启动。...(目标API>13时必需) 参考:https://developer.android.com/guide/topics/resources/runtime-changes.htmlAndroid设备屏幕方向的一二事

    1.9K280

    你真的了解ViewModel的设计思想吗?

    引言 在Android开发中,数据的管理是一个至关重要的问题。随着应用复杂度的增加,我们需要一种能够有效管理数据和处理UI相关逻辑的机制。Android架构组件中的ViewModel应运而生。...当UI控制器销毁时,系统会从其对应的ViewModelStore实例中移除ViewModel。...这意味着我们无需担心内存泄漏或不必要的资源占用。 持久性存储: ViewModel可以存储大量的数据,并且在配置更改时仍然保持活动。...它的存在是为了解决以下问题: 生命周期一致性:在Android开发中,我们经常遇到配置更改(如屏幕旋转)导致Activity或Fragment被销毁并重新创建的情况。...这个ViewModel将在配置更改时保持活动,确保数据不会丢失。 高级运用 使用SavedStateHandle SavedStateHandle是一个可用于在配置更改后保持数据的工具。

    32510

    Android 一起来看看知乎开源的图片选择库

    :matisse:0.4.3' } 有一点要注意一下, 这个图片选择库是使用 Glide 或 Picasso 作为图片加载引擎 如果你使用 Glide 作为你的图片加载引擎,请添加 Glide 的 README...(int maxSelectable) 来限制可选择的最大数目 方向 ---- 使用 restrictOrientation*(@ScreenOrientation int orientation) 来设置图像选择和预览活动所需的方向...网格的规格 ---- 如果你想要固定的跨度计数,请使用 spanCount(int spanCount),当方向更改时,范围计数将保持不变。...: toolbar toolbar 的风格 album.dropdown.title.color 专辑名称下的专辑中的下拉列表中的颜色 album.dropdown.count.color 工具栏元素的颜色...猜你喜欢 Android 一款十分简洁、优雅的日记 APP Android 能让你少走弯路的干货整理 Android 撸起袖子,自己封装 DialogFragment 手把手教你从零开始做一个好看的 APP

    1.7K30

    【Android开发高级系列】AndroidManifest.xml专题

    这个我用过,主要用来看手机方向改变的. android手机在旋转后,layout会重新布局,如何做到呢?         ...正常情况下.如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity.就会从onCreate开始重新加载.         ...6、android:launchMode(Activity加载模式)         在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。...可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。     ...的方向一致(在Activity堆栈中的);         sensor模式:有物理的感应器来决定。

    89150

    Jetpack Compose Beta 版现已发布!

    我们期待看到您使用 Compose 构建的内容, 并根据您的反馈和功能请求来优化我们的 API,并确定我们工作方向的优先级。...除了视图互操作性,我们还 集成了常用开发库,帮助您将 Compose 添加到现有应用中,而无需重写或重新设计应用。...Accompanist 还提供了适用于常见 图像加载库 的封装容器。...Compose 会负责在应用状态更改时更新您的 UI,这样您无需操作界面就能使其转变为预期状态,省去了繁琐的流程,并且可以避免出错。...Compose 完全使用 Kotlin 构建,可利用其优秀的 语言特性 提供功能强大、简洁且直观的 API。例如,借助 协程,我们可以编写更简单的异步 API,如描述手势、动画或滚动。

    5.6K10

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    而且,由于手机的各种资源有限(内存、电源等),Android系统在内存紧张的时候,往往会销毁当前没有使用的活动(不显示或不能响应的界面)。在系统中,活动将不断经历从创建到销毁的周期运行。...了解活动如何生存,以及活动整个生命周期的状态变迁,能更清楚地知道如何去实现活动。 从系统的角度来看,当Android应用(APP)启动运行时,就会创建一个任务(Task)。...在堆栈中,只有栈顶的活动可以操作,也就是说一个任务中只有一个活动处于运行状态,其他的活动都转入到后台暂停运行,Android系统会保存这些活动的状态,以便它们在转入前台时可以恢复运行。...通常在onStop()函数中释放不用的资源,关闭一些耗时的操作,比如向数据库里面写入数据。如果活动停止后,又重新启动它,活动又再次进入运行状态。...如果 LinearLayout 的排列方向是 horizontal,在水平方向上又要摆放多个控件时,那么就不能将控件的宽度指定为match_parent,因为这样会让一个控件把整个水平方向占满,其他的控件就没有可放置的位置

    22610

    2020年Android初级面试题一年汇总出炉,吃透它!

    从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。...standard 标准模式:每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,此模式的 Activity 默认会进入启动它的 Activity 所属的任务栈中; singleTop...不设置 Activity 的 android:configChanges 时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause()→...",经过机型测试 在 Android5.1 即 即 API 3 23 级别下,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次 在 Android9 即 即 API 8 28 级别下,切屏不会重新调用各个生命周期...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级

    1.3K30

    Android开发(九) Android Manifest.xml 结构详解

    , Q 是被P 触发的activity, 然后返回Home, 重新启动 P,是否显示 Q 3、android:configChanges 当配置list发生修改时, 是否调用 onConfigurationChanged...这个我用过,主要用来看手机方向改变的. android手机在旋转后,layout会重新布局, 如何做到呢? 正常情况下. ...如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity. 就会从onCreate开始重新加载....,宽度比高度大 portrait竖屏模式, 高度比宽度大 user模式,用户当前首选的方向 behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)...Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL),Activity与service

    1.3K30

    androidmanifest.xml作用_android读取xml数据

    , Q 是被P 触发的 activity, 然后返回Home, 重新启动 P,是否显示 Q 3、android:configChanges 当配置list发生修改时, 是否调用 onConfigurationChanged...这个我用过,主要用来看手机方向改变的. android手机在旋转后,layout会重新布局, 如何做到呢? 正常情况下....如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity. 就会从onCreate开始重新加载....portrait竖屏模式, 高度比宽度大 user模式,用户当前首选的方向 behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) sensor模式:...Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL),Activity与service

    1.4K20

    360度无死角,Android Jetpack面试技巧大揭秘

    它的使用场景包括但不限于: 单一活动多Fragment架构: 通过将所有Fragment集中在一个活动中,简化了导航的管理和传递数据的复杂性。...参考简答: ViewModel的作用在于解决Android应用中活动和碎片(Fragment)的生命周期问题。它允许数据在屏幕旋转等配置更改时存活,并确保数据在不同组件之间共享而不丢失。...数据共享:通过ViewModel,可以在不同的UI组件之间共享和管理数据,避免重复加载或丢失数据。 状态保存:ViewModel在配置变更时保持其状态,例如屏幕旋转,避免重新加载数据和执行耗时操作。...Hilt依赖注入的优势和基本原理 问题: 请解释Hilt依赖注入框架的优势,以及在Android应用中的使用方式。 出发点: 考察面试者对依赖注入的理解以及在Android开发中的应用经验。...适度使用Room的内存缓存: 使用@Query注解的LiveData返回值时,Room会自动在内存中维护缓存,但要注意不要过度依赖,以免造成内存浪费。

    28010

    Android Jetpack - LiveData

    生命周期状态更改时,LiveData 会通知 Observer 对象。你可以合并代码以更新这些 Observer 对象中的 UI。...每次应用程序数据更改时,你的观察者都可以在每次更改时更新 UI,而不是更新 UI 没有内存泄露 观察者绑定到 Lifecycle 对象,并在其相关生命周期被破坏后自行清理 不会因为活动停止而崩溃 如果观察者的生命周期处于非活动状态...,例如在后端堆栈中的活动的情况下,则它不会收到任何 LiveData 事件 不再需要手动处理生命周期 UI 组件只是观察相关数据,不会停止或恢复观察。...例如,后台活动在返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...具体可以参考 Android Jetpack - Room 一文所提供的代码示例 转换 LiveData 您可能希望在将 LiveData 对象分派给观察者之前更改存储在 LiveData 对象中的值,

    2K30

    深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了

    当启动应用时,后台已有该应用的进程,但是 Activity 需要重新创建。这样系统会从已有的进程中来启动这个 Activity,这个启动方式叫温启动。它的开销要比热启动高,比冷启动低。...它可能会省去布局文件中未引用的资源或被应用作为对象初始化一部分创建的资源。因为加载它们是一个内嵌进程,并且不会阻止应用的初步显示。...它属于 instrument 类型,能查看整个过程有哪些函数调用,但是工具本身带来的性能开销过大,有时无法反映真实的情况,可能会带偏优化方向。...Thread activity timeline:表示线程活动时间线,列出 App 进程中的每个线程,并使用了不同的颜色在其时间轴上指示其活动。可以选择一个线程,在跟踪面板中检查它的数据。...统计竞品 APP 启动耗时与自身 App 对比,更清楚了解到当前 App 与竞品 App 之间的差距。 只有准确的数据评估才能指引优化的方向,这一步是非常非常重要的。

    1.7K11

    android内存优化

    在Android中,上下文(Context)被用作很多操作中,但是大部分是载入和访问资源。这就是所有的widget都会在它们的构造函数中接受一个上下文(Context)参数。...在一个合格的Android应用中,你通常能够用到两种上下文(Context):活动(Activity)和应用(Application)。...如果你不够小心的话,“泄露”一整个活动(Activity)是件非常简单的事情。     当屏幕的方向改变时系统会默认的销毁当前的活动(Activity)并且创建一个新的并且保持了它的状态。...这样的结果就是Android会从资源中重新载入应用的UI。现在想象一下,你写了一个应用,有一个非常大的位图,并且你并不想在每次旋转时都重新载入。...保留它并且每次旋转不重新加载的最简单的办法就是把它保存在一个静态字段上: private static Drawable sBackground;   @Override protected void

    90070

    响应Android系统的事件

    在开发Android应用时,有时候可能需要让应用程序随系统设置而进行调整,比如判断系统的屏幕方向、判断系统方向的方向导航设备等。...该属性不仅会判断系统的硬件键盘,也会判断系统的软键盘(位于屏幕)。 locale:获取用户当前的语言环境。 mcc:获取移动信号的国家码。 mnc:获取移动信号的网络码。...当系统设置发生更改时,该方法会被自动触发。...包下创建SystemEventActivity.java文件,加载上面新建的布局文件,具体代码如下: package com.jinyu.cqkxzsxy.android.widgetsample;...在Genymotion模拟器上修改模拟器的屏幕方向,具体操作如下左图所示,当模拟器屏幕方向切换时,可以看到如下右图所示消息提示。 ? 当然如果用真机测试,测试就更方便了。

    1.4K90

    Android学习笔记(四)深入探讨Activity

    Fragment用来封装UI的各个部分,从而能够方便的创建动态界面,这些界面能够针对不同的屏幕尺寸很方向重新排列,起到优化UI的效果。   ...2、Activity状态   随着Activity的创建和销毁,从栈中移进移出的过程中他们经历了如下4种可能的状态: · 活动状态:当一个Activity处于栈顶是,它是可见的、具有焦点的前台Activity...此时,Activity仍然会保留在内存中,保存所有状态信息,然而当系统的其他地方要求使用使用内存时,会优先终止此类状态的Activity。 · 非活动状态:Activity被终止。...Activity在完整生存期期间可能会包含多个可见生存期。在个别极端情况下,Android运行时可能会在一个Activity位于可见生存期事把它终止,而不调用onStop方法。   ...Activity被销毁前可能会经历多个活动生存期,在失去焦点是,活动生存期就结束了。尽量让onPause和onResume方法中的代码执行迅速,尽可能少。以保证前后台切换时能够保持响应。

    1.1K100

    Android Loader 机制,让你的数据加载更加轻松

    前言 在 Android 中,任何耗时的操作都不能放在 UI 线程中,所以耗时的操作都需要使用异步加载来实现。...,会自动重新连接上一个加载器的游标。...在此示例中,本地类实现了 LoaderManager.LoaderCallbacks 接口,因此直接传递它对自身的引用 this initLoader() 调用确保加载器已经初始化且处于活动状态,这可能会出现两种结果...中的内容,比起 Handler + Thread 或者 AsyncTask 的实现方式,Loader 机制能让代码更加的简洁易懂,而且是 Android 3.0 之后最推荐的加载方式。...Loader 机制的 使用场景 有: 展现某个 Android 手机有多少应用程序 加载手机中的图片和视频资源 访问用户联系人 下面用一个加载手机中的图片文件夹的例子,看看在实际开发中如何运用 Loader

    75510

    android防止内存溢出浅析

    需要注意一点的是:因为在Java或者Android内存机制中,顶点的结点释放前必须保证其他对象没有调用才能被系统GC回收释放。...最简单的比如说位图(Bitmap),比如说:在屏幕旋转时,会破坏当前保持的一个Activity状态,并且重新申请生成新的Activity,直到新的Activity状态被保存。...它的内存泄露很容易出在屏幕转移的方向上。...虽然我们会发现没有显示的保存Context这个实例,但是当我们把绘制的图连接到一个视图的时候,Drawable就会将被View设置为回调,这就说明,在上述的代码中,其实在绘制TextView到活动中的时候...我们要是能做到C/C++对于程序的“谁创建,谁释放”原则,那我们对于内存的把握,并不比Java或Android本身的GC机制差,而且更好的控制内存,能使我们的手机运行得更流畅。

    68350
    领券