首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 5.0 API新增和改进

声音和振动 如果您当前在使用 Ringtone、MediaPlayer 或 Vibrator 类为通知添加声音和振动,请移除该代码,这样系统才能以优先模式正常呈现通知。...“最近用过”屏幕中的并行文档和活动 在以前的版本中,对于用户最近与之互动的每个应用,“最近用过”屏幕都只能显示一个任务。现在,您的应用可以视需要针对其他并行活动或文档打开多个任务。...您也可以通过调用 setTaskDescription() 方法,来更改“最近用过”屏幕中活动的视觉属性,如活动的颜色、标签和图标。...要使用新的公告和扫描功能,请在您的清单中添加 BLUETOOTH_ADMIN 权限。...当前应用可以启动新活动,只要这样做不会创建新任务即可。 当屏幕固定是由设备所有者调用的时,用户将保持锁定到您的应用,直到该应用调用 stopLockTask()。

1.7K20

Android Service的解析

Service并不是在单独进程中运行,也是运行在应用程序进程的主线程中,在执行具体耗时任务过程中要手动开启子线程,应用程序进程被杀死,所有依赖该进程的服务也会停止运行。...,这样像网络、数据库、复杂计算这类耗时操作的执行就需要一个组件来承担。...应用内或应用间数据通信,Android每个应用程序都在自己的dalvik虚拟机中运行,一个应用是不允许访问其他应用的内存信息的,为此Android引入了Content Provider在不同应用间共享数据...Service的创建 新建一个TgsService继承自Service,并重写父类的onCreate()、onStartCommand()和onDestroy()方法,如下面的代码所示: public..." /> IntentService的启动 然后创建一个TgsActivity的测试活动,并在点击按钮时调用startService系统函数来开启IntentService的服务,示例代码如下: public

15010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Android应用开发揭秘》连载3

    * wrap_content:随着文字栏位的不同而改变这个视图的宽度或高度。 layout_weight 用于给一个线性布局中的多个视图的重要度赋值。...每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件作出响应。...这里的每一个屏幕就是一个活动,很容易实现从一个屏幕到一个新的屏幕,并且完成新的活动。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史栈中。...在Android中,每一个应用都运行在各自的进程中,当一个应用需要访问其他应用的数据时,也就是数据需要在不同的虚拟机之间传递,这样的情况操作起来可能有些困难(正常情况下,不能读取其他应用的db文件),Content...如何通过Service来播放音乐,其实也很简单,首先创建一个MusicService继承自Service,然后通过start和stop方法来控制音乐的播放,如代码清单3-10所示。

    89220

    三星折叠屏开发者设计指南揭秘

    不要在活动的OnDestroy()中调用finish()或自行终止进程,否则将导致APP在设备折叠或展开时关闭。...从 Android P (9.0) 开始,谷歌提供了名为Multi-resume的新功能,允许设备厂商在多窗口模式下保持所有可见应用处于活动状态,解决了分屏的多个应用仅有一个能保持活动状态的问题。...image 2.2 APP如何在Multi-resume运行 在Android P (9.0)中启用Multi-resume,请在应用清单manifest中增加如下元数据: ? image 3....3.2 优化内外屏布局 可折叠移动设备中,应用程序可以运行在大小不同的显示屏幕中,我们首先建议添加一个单独的资源文件夹来展示更丰富更清晰的内容。...应用连续性 应用连续性是折叠屏手机的一大亮点,当在外屏和内屏之间切换时,应用保持运行状态,并会自动调整大小以匹配新的布局。

    4.1K40

    备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!

    而且每次启动一个 Activity,都会重新创建新的实例,不管这个实例在任务中是否已经存在。...此解决办法就是为待启动Activity指定 FLAG_ACTIVITY_NEW_TASK标记位,这样启动的时候系统就会为它创建一个新的任务栈。...11.广播注册 首先写一个类要继承BroadCastReceiver 第一种:在清单文件中声明,添加 android:name=".BroadCastReceiverDemo">...一个Fragment 容器中只能添加一个Fragment 种类,如果多次添加则会报异常,导致程序终止,而replace 则无所谓,随便切换。..., 什么时候应该手动调用 bitmap.recycle() Bitmap 是 android 中经常使用的一个类,它代表了一个图片资源。

    1.2K31

    Android开发中的Kotlin扩展函数技巧!

    在Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...扩展函数是Kotlin中的一种特殊函数,它允许我们向一个类添加新的函数,而无需继承或修改这个类的源代码。扩展函数的语法非常简单,只需要在函数名前面加上类名,并用点号隔开即可。...扩展函数的优点 使用扩展函数有以下几个优点: 无需修改类的源代码:扩展函数可以让我们向现有的类添加新的功能,而无需修改类的源代码。这样可以避免意外修改类的行为,降低了代码的风险。...代码可读性更好:使用扩展函数可以让我们在代码中直接调用新的功能,而无需创建新的实例或引入新的类。这样可以使代码更加简洁易懂。...: view.fadeIn() view.fadeOut() 总结 扩展函数是Kotlin中的一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。

    34720

    安卓13又来了?快!扶起我来!

    细化的媒体权限如果要将应用升级为 Android 13 ,必须请求一个或多个新权限,Android 13 中将媒体权限细分为了图片、视频和音频文件,而不是之前的 READ_EXTERNAL_STORAGE...添加一个标志。...照片选择器Android 13(T-33)支持新的照片选择器工具。此工具为用户提供了一种安全的内置媒体文件选择方式,让其无需向应用授予对整个媒体库的访问权限。...如果你的应用支持多种语言,官方强烈建议我们在应用的清单中声明 android:localeConfig 属性,这样用户就可以在同一位置像更改其他应用的语言设置一样更改应用的语言设置。..."/> android:name="en"/>在清单中,添加一行指向这个新文件的代码:<manifest...

    93240

    Android 8.0 功能和 API(翻译自Google官网)

    可下载字体 Android 8.0 和 Android 支持库 26 允许您从提供程序应用请求字体,而无需将字体绑定到 APK 中或让 APK 下载字体。...系统 新的 StrictMode 检测程序 Android 8.0 添加了三个新的 StrictMode 检测程序,帮助识别应用可能出现的错误: detectUnbufferedIo() 将检测您的应用何时读取或写入未缓冲的数据...音频焦点增强功能 音频应用通过请求和舍弃音频焦点的方式在设备上共享音频输出。应用通过启动或停止播放或者闪避音量的方式处理处于聚焦状态的变更。有一个新的 AudioFocusRequest 类。...如果没有可用的指标,则此函数将返回 null。返回的实际指标取决于类。 MediaPlayer Android 8.0 为 MediaPlayer 类添加了多种新函数。...TS); MediaMuxer 现在可以处理任意数量的音频和视频流,而不再仅限于一个音频曲目和/或一个视频曲目。

    2.9K30

    格子拼贴 — 关于模块化的故事

    这意味每一位用户都能为其它应用预留更多空间。 同时下载时间也因文件大小缩小而改善。 ? 无需修改任何一行代码即可实现这一大幅度改进。...像这样遵循约定,可以更快地、更容易地将资源转移至正确地方。这同样也有助于避免编译错误和运行时序错误。 过程挑战 同团队良好沟通,对使得一个重要的重构任务像这样易于管理而言,十分重要。...应用对功能模块没足够了解时访问代码,这将没办法在 Intent(ACTION_VIEW, ActivityName::class.java) 方法中通过它们的类名启动活动。 有多种方式启动活动。...{ /** * The activity class name. */ val className: String } 复制代码 使用这种方式,我们创建了一个函数来统一活动启动意图创建...编译时间 一个没有缓存的调试构建现在需 32 秒而不是 48 秒。 同时任务从 50 项增长到 250 项。 这样的时间节省,主要是由于增加并行构建以及由于模块化而避免编译。

    81630

    Android App Bundle:动态功能模块

    本文并不是介绍Android App Bundle,因为它不是新的事物,相关的文章也有很多了,本文重点介绍的是Android App Bundle中“动态功能模块”的实际应用。...implementation project(':app') } 部署应用 在开发支持功能模块的应用时,您可以像往常一样,从菜单栏中依次选择 Run > Run(或点击工具栏中的 Run 图标 ),将该应用部署到连接的设备...Google Play 免安装体验让用户无需在设备上安装 APK 即可与您的应用互动。用户可以通过 Google Play 商店中的“立即体验”按钮或您创建的网址体验您的应用。...如需了解详情,请阅读通过缩减应用或游戏大小支持免安装体验。 后台活动:支持免安装体验的模块无法使用后台服务。此外,此类模块在后台运行时无法发送通知。...如果您使用 Android Studio 3.5 或更高版本创建支持免安装体验的功能模块(如本部分所述),IDE 会在每个模块的清单中添加以下内容,从而自动使基本模块和功能模块支持免安装体验: <manifest

    2.3K20

    谷歌官方Android应用架构库——LiveData

    正确处理配置更改:如果 activity 或 fragment 由于配置更改(如:设备旋转)重新创建,将会立即收到最新的有效位置数据。...资源共享:可以只保留一个 MyLocationListener 实例,只连接系统服务一次,并且能够正确的支持应用程序中的所有观察者。...转换的这种惰性运算性质允许隐式的传递生命周期相关行为,而不必添加显式的调用或依赖。 每当你认为在 ViewModel 中需要一个 Lifecycle 类时,转换可能是解决方案。...如果在调用时没有处于活动状态的观察者,在添加观察者之前不会进行任何运算。 该机制允许以较少的资源根据需要惰性运算来创建 LiveData。...创建新的转换 在应用程序中可能会用到十几种不同的特定转换,但是默认是不提供的。

    1.1K30

    Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数

    面试题目2:Kotlin中的扩展函数和扩展属性是什么?如何在Android开发中使用它们? 解答: 扩展函数和扩展属性允许你在不修改类的情况下向现有类添加新功能。...} 扩展属性:扩展属性是为现有类添加的新属性。...例如,可以为View类添加一个扩展函数来简化View的显示和隐藏: fun View.show() { this.visibility = View.VISIBLE } fun View.hide...如何在Android开发中使用高阶函数? 解答: 高阶函数是可以接受其他函数作为参数或返回函数的函数。它们在函数式编程中非常有用。...如何在Android开发中使用密封类? 解答: 密封类是一种特殊的类,它限制了子类的数量。密封类的所有子类都必须在同一个文件中定义。密封类通常用于表示受限的层次结构,例如状态机或结果类型。

    74910

    Android训练课程(Android Training) - 构建你的第一个应用

    NEXT: RUNNING YOUR APPLICATION 下一课:启动你的应用程序 启动你的应用 如果你跟随上一课的内容创建了一个安卓项目,它包含了一些像“Hello World”这样的默认文件,...这节课将将向你展示如何在真实设备和模拟器中安装和启动你的应用,有两种方式:使用Eclipse或者命令提示符工具。...你也可以创建任意的资源ID,并通过android:id来关联到一个视图控件,它使得你可以从其他代码里应用这个视图控件。 每次你编译你的应用,SDK工具都会生产R.java文件,你不能手动修改这个文件。...,这个类是当你创建项目时由SDK工具自动生成的,这样你现在可以启动这个应用看下结果: 在Eclipse,在工具栏里点击 Run 。...如果你使用了不同的IDE,你需要自行添加清单文件的入口,像下面这样: ...

    2.2K00

    格子拼贴 — 关于模块化的故事

    这意味每一位用户都能为其它应用预留更多空间。 同时下载时间也因文件大小缩小而改善。 无需修改任何一行代码即可实现这一大幅度改进。...像这样遵循约定,可以更快地、更容易地将资源转移至正确地方。这同样也有助于避免编译错误和运行时序错误。 过程挑战 同团队良好沟通,对使得一个重要的重构任务像这样易于管理而言,十分重要。...应用对功能模块没足够了解时访问代码,这将没办法在 Intent(ACTION_VIEW, ActivityName::class.java) 方法中通过它们的类名启动活动。 有多种方式启动活动。...{ /** * The activity class name. */ val className: String } 使用这种方式,我们创建了一个函数来统一活动启动意图创建...编译时间 一个没有缓存的调试构建现在需 32 秒而不是 48 秒。 同时任务从 50 项增长到 250 项。 这样的时间节省,主要是由于增加并行构建以及由于模块化而避免编译。

    12310

    安卓入门-第二章-探究活动

    一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序很少见,谁也不想让自己的应用永远无法被用户看到吧?  活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧。...2.2.2 创建和加载布局  前面我们说过,Android程序的设计讲究逻辑和视图分离,最好每一个活动都能对应一个布局,布局就是用来显示界面内容的,因此我们现在就来手动创建一个布局文件。...2.2.6 销毁一个活动  通过上一节的学习,你已经掌握了手动创建活动的方法,并学会了如何在活动中创建Toast和创建菜单。或许你现在心中会有个疑惑,如何销毁一个活动呢?  ...使用前面3种启动模式肯定是做不到的,因为每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例。...六、活动的最佳实践 6.1 知晓当前是在哪一个活动  思路就是创建一个新类,而不是活动文件,并且使其继承于AppCompatActivity类,然后重写其onCreatre方法,再让所有之前写的活动继承于此类

    3K20

    Flutter 1.22 正式发布

    我们创建了这些v2 API,以更好地支持Android上的应用程序添加用户。一年后,超过80%的Android插件使用了新的Android API。从1.22开始,我们不再使用较旧的v1 API。...同样,有了此PR,在Flutter所在的项目中,字符包均可自动在项目中使用,而无需手动添加。希望这使得处理来自所有语言环境的各种字符串变得更加容易。...如果您想使用平台视图在iOS或Android上托管自己的本机UI组件,则可以了解如何在使用平台视图在Flutter应用中托管本机Android和iOS视图上。...要进行手动测试,最简单的方法是在Android设备上启动启用了状态恢复功能的Flutter应用,在Android开发人员设置中启用“不要保留活动”,运行Flutter应用,将其置于后台,然后然后回到它。...Flutter开发人员所面临的常规活动是从终端或堆栈跟踪中的错误输出中进行。

    7.5K20

    Hilt 实战 | 创建应用级别 CoroutineScope

    在遵循 协程最佳实践 时,您可能需要在某些类中注入应用级别作用域的 CoroutineScope,以便可以创建与应用生命周期相同的新协程,或创建在调用者作用域之外仍可以工作的新协程。...手动依赖项注入 在不使用任何库的情况下,遵循依赖项注入 (DI) 的最佳实践方案来 手动 创建一个应用级别作用域 的 CoroutineScope,通常会在 Application 类中添加一个 CoroutineScope...中没有可靠的方法来获取 Application 销毁的时机,并且应用级别的作用域以及任何正在执行的任务都将同应用进程的结束一同销毁,也意味着您无需手动调用 applicationScope.cancel...手动注入更优雅的做法是创建一个 ApplicationContainer 容器类来持有应用级别作用域的类型。...通过本文,您已经了解到如何使用 Hilt 创建一个应用级别的 CoroutineScope 作为依赖项注入,如何注入不同的 CoroutineDispatcher 实例,以及如何在测试中替换它们的实现。

    1K10

    Activity详解

    onCreate // onCreate 该方法是在Activity被创建时回调,它是生命周期第一个调用的方法,我们在创建Activity时一般都需要重写该方法,然后在该方法中做一些初始化的操作,如通过...; 隐式启动 // 隐式启动:进行三个匹配,一个是activity,一个是category,一个是data,全部或者部分匹配,应用于广播原理 清单文件中 里配置 activity 属性,activity...Paused // Paused 当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。...我们创建一个新的项目,默认的根activity都是MainActivity,而所有的activity都是保存在堆栈中的,我们启动一个新的activity就会放在上一个activity上面 我们从桌面点击应用图标的时候...而startActivityForResult()这个方法实际是通过Instrumentation类中的execStartActivity()方法来启动activity,Instrumentation这个类主要作用就是监控程序和系统之间的交互

    1.1K30

    Android 4.0 平台特性

    采用Android束的设备之间传输数据,您需要创建一个包含您要共享的信息,而您的活动是NdefMessage前台的NdefMessage。...以及一些其他的接口和类是必要的,如: WifiP2pManager.ActionListener接口,让您能够接收的操作时,如发现同行或连接到他们的成功或失败的回调。...要声明一个行动提供一项功能,包括android:actionProviderClass属性在元素为你的活动中的选项菜单,类名的功能提供更有价值的。...虽然SurfaceView相似,TextureView是独特的,因为它表现得像一个普通的观点,而不是创造另一个窗口,所以你可以把它像其他视图对象。...使用Property类,你可以在Foo类中定义一个Property对象BAR,这样你就可以通过Foo类中的foo实例来设置它的值,如下: BAR.set(foo,value); 所以现在

    1.2K20

    Android 各版本特性

    (优先排列媒体,系统和游戏声音) 新的图片解码 Android P新增了ImageDecoder类,为解码图像提供了一种更优的方法。...P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。...这种实现允许您的应用拥有动画图像,而无需管理其更新或干扰应用的UI线程。...这样做是为了省电和性能,防止大量APP通过监听各种广播来拉起自己。 清单注册的显式广播和动态注册的隐式广播依然可以正常工作。...Android Q 中的 Zygote进程,提早开启应用进程并将其移至安全容器中,如此一来,应用便做好了随时启动的准备 在应用的系统启动映像中加入了更多信息,例如类,并借助线程管理加快映像文件的加载速度

    1.4K10
    领券