android
文章平均质量分 81
PekingVagrant
生活如此美好,值得我们为之奋斗。
展开
-
Kotlin Lazy vs Lateinit 属性. 何时使用哪个属性?
原文链接。Kotlin提供了许多很棒的特性。我们可以利用这些功能,快速构建高质量的应用程序。在所有这些特性中, 和 是重要的初始化属性。有必要知道何时使用 以及何时使用 初始化。有时变量的值在其声明位置并不可用。对于 Android 开发者来说,一个明显的例子是在 或 中使用的 UI 小部件。直到 或 方法运行,整个 activity 中用于引用小部件的变量才能初始化。本例中的 ,例如:示例1.1无lateint的对象初始化必须初始化变量。由于我们还不能知道值,一种标准的技术是使变量可翻译 2022-07-01 01:02:23 · 508 阅读 · 0 评论 -
使用 Coroutines(协程) 和 Flow(流) 的 LiveData -第二部分:使用架构组件启动协程
本文是我在 2019 年 Android 开发者峰会上与 Yigit Boyar 的谈话总结的第二部分。使用协程和流的 LiveData (ADS 2019)https://youtu.be/B8ppnjGPAGE第一部分:响应式 UI第二部分:使用架构组件启动协程(本文)第三部分:LiveData 和协程模式Jetpack 的架构组件提供了许多快捷方式,所以您不必担心作业和取消。你只需要选择你的行动的作用域:ViewModel 的作用域这是启动协程最常见的方法之一,因为大多数数翻译 2021-09-28 13:35:10 · 595 阅读 · 0 评论 -
使用协程(Coroutines)和流(Flow)的 LiveData -第一部分:响应式UI
本文是我在2019年Android开发者峰会上与Yigit Boyar谈话的总结。带有协程和流的 LiveData(ADS 2019)第一部分:响应式UI(本文)第二部分:用 架构组件(Architecture Components)启动协程第三部分: LiveData 和协程模式第一部分:响应式UI从 Android 早期开始,我们很快就了解到Android 的生命周期很难理解,充满了边缘情况,保持清醒的最好方法是尽可能地避免它们。 为此,我们推荐分层架构,这样我们就可以...翻译 2021-09-24 12:07:00 · 556 阅读 · 0 评论 -
在 Android 12 中使用你的微件做更多事情!
原文链接。在 Android 12 中使用你的微件做更多事情!这篇文章是我写的关于更新 Android 12 微件的小连载文章的第二篇。在上一部分中,我们探索了一些简单的方法来实现对app用户高度可见的可视化更新。在本部分中,我们将介绍一些更高级的功能,使您的微件更具交互性,更易于配置,并在 Android 12 上提供更好的UI体验。更简单的配置在 Android 12 之前,重新配置小部件意味着用户必须删除现有的微件,并使用新配置再次添加。Android 12 以多种方式改进了微件的配置翻译 2021-09-17 18:03:34 · 673 阅读 · 2 评论 -
为 Android 12 更新你的微件(Widget)
很长时间以来,微件(Widgets) 一直是Android核心体验的一部分,许多应用程序有效地使用微件来增加用户参与度。用户喜欢微件,因为它能够在不启动应用程序的情况下使用应用程序的功能,并自定义设备的主屏幕。Android 12更新了现有的微件API,并修改了微件的设计,使之与“Material You”的设计语言保持一致。这些更改允许您使用设备主题颜色和圆角来构建更好看的微件,同时增强 搜索和放置微件 的可发现性和视觉效果。翻译 2021-09-15 17:39:02 · 1258 阅读 · 0 评论 -
could not open '.git/COMMIT_EDITMSG': Permission denied
打开仓库目录文件夹,选择显示隐藏文件夹,找到.git/COMMIT_EDITMSG 文件,删除该文件,重新 add 、commit 。原创 2020-04-17 11:21:53 · 4389 阅读 · 2 评论 -
android 网络请求库 retrofit okhttp okio rxjava gson 混淆规则套餐
################################ retrofit ################################# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and# EnclosingMethod is require...原创 2020-03-18 10:55:41 · 1005 阅读 · 0 评论 -
kotlin 中 @JvmStatic 注解的作用。
关于 kotlin 中的 @JvmStatic注解,JvmPlatformAnnotations.kt 的注释原文:Specifies that an additional static method needs to be generated from this element if it's a function.If this element is a property, add...原创 2019-04-21 00:37:34 · 17270 阅读 · 2 评论 -
升级 Android Studio 3.2.1 后出现的一些问题的解决办法
AS 让人又爱又恨,升级很容易出现问题。目录一、xml布局中不识别属性,如Unknown attribute android:layout_width二、xml layout 中不报错,但 Preview 中一片空白,并提示 "NOTE: One or more layouts are missing the layout_width or layout_height attribu...原创 2018-11-20 10:11:31 · 6177 阅读 · 0 评论 -
让我们来谈谈 Android(国外 Android 学习资源)
原文链接 Let’s talkAndroid。无论你是编程新手还是经验丰富的开发人员,我都准备了一系列资源来教你 Android App 开发,从你的第一个 app 到高级主题。翻译 2019-03-29 13:00:47 · 689 阅读 · 0 评论 -
剖析 Android Runtime:DVM vs ART
原文链接Closer Look At Android Runtime: DVM vs ART。在直接进入 Android Runtime 之前,我们需要了解什么是运行时环境,还需要了解一些基本的东西,如 JVM 和 Dalvik VM 的功能。什么是运行时(runtime)?在最简单的术语中,它是操作系统使用的系统,它负责将您使用 Java 等高级语言编写的代码转换为 CPU...翻译 2019-03-27 23:19:32 · 296 阅读 · 0 评论 -
Android 生命周期备忘表-第二部分:多个 Activities
原文链接The Android Lifecycle cheat sheet — part II: Multiple activities。目录Back Stack - 场景1:在 activities 之间导航Back Stack — 场景 2: 返回栈中Activities 的配置更改Back Stack — 场景 3: App 进程被杀死同时阅读继续阅读在本系...翻译 2019-05-09 22:13:58 · 299 阅读 · 0 评论 -
ViewModels 和 LiveData:模式 +反模式
原文链接 ViewModels and LiveData: Patterns + AntiPatterns。Views 和ViewModels分配职责使用 Architecture Components 构建的 app 中实体的典型交互理想情况下,ViewModels 不应该知道任何关于 Android 的事情。这提高了可测试性、泄漏安全性和模块性。一般的经验法则是确保...翻译 2019-03-31 15:56:50 · 877 阅读 · 0 评论 -
Android 生命周期备忘表-第一部分:单一 Activities
翻译自 The Android Lifecycle cheat sheet — part I: Single Activities。Android 旨在为用户提供支持,让他们以直观的方式使用 apps。 例如,一个 app 的用户可能会旋转屏幕,响应通知或切换到其他任务,他们应该能够在此类事件之后无缝地继续使用 app。为了提供这种用户体验,您应该知道如何管理组件生命周期。组件可以是 Ac...翻译 2019-04-25 23:06:57 · 167 阅读 · 0 评论 -
探索 Android Q:位置权限
原文链接 Exploring Android Q: Location Permissions。本文最初发表于https://joebirch.co/上周(本文发表于2019.3.29)我们看到了 Android Q 测试版的发布这个 Android 版本带来了一系列令人兴奋的变化,我们需要让我们的 apps 为这些变化做好准备。在这个文章系列中,我将深入讨论其中的每个变更,以便...翻译 2019-04-22 13:39:42 · 3269 阅读 · 0 评论 -
一份你可能需要的用中文注释的 Looper 源码
Straightforward/** * 用来为一个线程运行消息循环的类。默认的线程本身是没有与之相关联的消息循环的; * 要创建一个的话,在将要运行循环的线程中调用 {@link #prepare},然后调用 * {@link #loop} 来让它处理消息,直到循环停止。 * * * <p>与消息循环的大多数交互都是通过 {@link Handler} 类进行的...原创 2019-04-22 22:34:36 · 385 阅读 · 0 评论 -
Android 生命周期备忘表-第三部分:Fragments
原文链接The Android Lifecycle cheat sheet — part III: Fragments。目录场景 1: 带有 Fragment 的 Activity starts和 finishes场景 2: 带有 Fragments 的 Activity 被旋转Fragments — 场景 3: 带有被保留的Fragment 的 Activity 被旋转...翻译 2019-05-18 20:48:10 · 364 阅读 · 0 评论 -
Android Studio mPaaS 插件使用问题记录
在使用mPaaS插件生成热修复文件时,key strore path 一项填入的路径不能包含空格,否则会无法生成热修复.jar文件,如下图:********************************************************** 2020.1.3更新 *****************************************************...原创 2019-07-15 14:58:23 · 925 阅读 · 0 评论 -
自定义验证码输入控件
控件代码深度参考了掘金文章Android仿滴滴出行验证码输入框效果,增加了 setText() 方法控件采用多个横向排列的 EditText 组合控件来实现验证码录入框。自定义属性文件 attrs.xml <!--自定义短信验证码输入控件声明--> <declare-styleable name="vericationCodeInput"> ...原创 2019-07-29 21:11:24 · 504 阅读 · 0 评论 -
带有 View 的 Android Room —— Kotlin
本文翻译自 Android Room with a View - Kotlin codelab,较长。目录1. 介绍推荐的 Architecture Components(架构组件)是什么?你将构建什么RoomWordSample架构概览你将学到什么你需要什么2. 创建你的 app3. 更新 gradle 文件4. 创建实体5. 创建 DAO什么是D...翻译 2018-12-18 17:24:26 · 2056 阅读 · 0 评论 -
充分利用 Kotlin
翻译自Taking Advantage of Kotlin codelab。目录1.介绍你将构建什么你会学到什么你需要什么2.准备好开始下载代码应用概述Contact.javaContactsActivity.java配置Kotlin3.Kotlin 转换基础知识将联系人 POJO 转换为 Kotlin 数据类Contact 类文件的...翻译 2019-03-07 17:21:44 · 925 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - 进阶第二部分
原文链接这个故事是该系列的第七部分,适用于Android 初学者的 Dagger 2。 如果您没有阅读上一个,可以从下面开始。Dagger 2 for Android Beginners — IntroductionDagger is a fully static, compile-time dependency injection framework for both Java an...翻译 2019-02-26 22:50:10 · 383 阅读 · 0 评论 -
为 Snackbar 添加 “取消” 按钮
Material Design 是真的不错,但是其中的 Snackbar 却不流行,推出它的本意可能是取代 Toast,不过天朝没几家 app 用,只发现在微信上当收藏文章时底部提示 “已收藏 添加标签”,好像是个自定义之后的 Snackbar?!。Snackbar 上可以有一个操作按钮,像这样但是总觉得 Snackbar 上缺个取消按钮,或者是指定其他 action 的按钮, 既...原创 2019-02-26 16:43:49 · 1153 阅读 · 0 评论 -
App 快捷方式——创建快捷方式
原文链接快捷方式通过帮助用户快速访问 app 的某些部分,为用户提供特定类型的内容。如何使用快捷方式提供内容取决于您的用例以及快捷方式的上下文是应用驱动还是用户驱动。 虽然静态快捷方式的上下文不会更改,并且动态快捷方式的上下文会不断更改,但两种情况下的上下文都是由您的应用程序驱动的。 如果用户选择他们希望您的应用向他们提供内容的方式,例如使用固定的快捷方式,则上下文由用户定义。 以下场景演...翻译 2019-01-15 18:53:07 · 6086 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - DI 第二部分
本文翻译自 Dagger 2 for Android Beginners — DI part II。这个故事是该系列的第三部分,适用于 Android 初学者的 Dagger 2。 如果您没有阅读上一篇文章,可以从这里开始。系列目录适用于 Android 初学者的 Dagger 2 - 简介 适用于 Android 初学者的 Dagger 2 - DI 第一部分 适用于 ...翻译 2019-01-21 11:26:31 · 163 阅读 · 0 评论 -
App 快捷方式概述
原文链接目录App 快捷方式概述快捷方式类型快捷方式的限制App 快捷方式概述作为开发人员,您可以定义快捷方式以在 app 中执行特定操作。 这些快捷方式可以显示在支持的 launcher(桌面图标启动器) 中,帮助用户快速启动 app 内的常见或推荐任务。这套指南教您如何创建和管理应用程序快捷方式。 此外,您将学习一些可以提高快捷方式效果的最佳实践。快捷方式类型...翻译 2019-01-14 22:59:13 · 840 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - DI 第一部分
本文翻译自 Dagger 2 for Android Beginners — DI part I。目录系列目录Dagger 2 前情回顾..先决条件什么是依赖注入?解决硬性依赖问题(又名 white walkers)的策略依赖注入技术例1分析 War总结下一步是什么?这个故事是该系列的第二部分,适用于 Android 初学者的 Dagger 2。...翻译 2019-01-17 15:55:49 · 453 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - 简介
本文翻译自 Dagger 2 for Android Beginners — Introduction,作者是 Hari Vignesh Jayapalan。目录谁应该阅读?系列目录先决条件什么是依赖?为什么依赖不好?依赖的类型总结下一步是什么?Dagger 是一个完全静态的编译时依赖注入框架,适用于 Java 和 Android。 它是 Square 创...翻译 2018-12-19 23:05:35 · 308 阅读 · 0 评论 -
失踪的指南:如何使用 Dagger 2
“生活如此美好,值得我们为之奋斗。”,我只同意后半句。本文翻译自 Gabor Varadi 的 That Missing Guide: How to use Dagger2,主要介绍了使用 Dagger2 时需要注意的地方。目录步骤:如何将 Dagger 添加到你的项目中如何判断你做得不对让我们来看一个真实的例子吧使用构造函数 injection(注入)+ scop...翻译 2018-12-07 16:46:11 · 300 阅读 · 0 评论 -
应用程序架构指南(本文已过时,请点击原文链接查看最新官方文档)
原文链接目录移动应用程序用户体验一般架构原则关注点分离由 model(模型)驱动 UI推荐的应用程序架构概览构建用户界面获取数据连接 ViewModel 和 repository缓存数据持久化数据展示正在进行中的操作测试每个组件最佳实践附录:暴露网络状态本指南面向那些已经掌握了构建应用程序...翻译 2019-02-20 09:31:19 · 7072 阅读 · 2 评论 -
Android 生命周期感知组件 codelab
风,它不肯说,云,悄悄飘过,黑夜它依旧沉默。只有天上一颗星星说,她睡了,你是否也该休息了。 ...翻译 2018-11-30 14:30:49 · 821 阅读 · 1 评论 -
适用于 Android 初学者的 Dagger 2 - Dagger 2 第一部分
原文链接这个故事是该系列的第四部分,适用于 Android 初学者的 Dagger 2。 如果您没有阅读上一篇文章,可以从这里开始。系列目录适用于 Android 初学者的 Dagger 2 - 简介 适用于 Android 初学者的 Dagger 2 - DI 第一部分 适用于 Android 初学者的 Dagger 2 - DI 第二部分 适用于 Android...翻译 2019-01-21 15:33:11 · 179 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - Dagger 2 第二部分
原文链接这个故事是该系列的第五部分,适用于 Android 初学者的 Dagger 2。 如果您没有阅读上一个,可以从下面开始。系列目录适用于 Android 初学者的 Dagger 2 - 简介 适用于 Android 初学者的 Dagger 2 - DI 第一部分 适用于 Android 初学者的 Dagger 2 - DI 第二部分 适用于 Android 初...翻译 2019-01-21 17:16:37 · 169 阅读 · 0 评论 -
探索 Android App Bundle
原文链接 Exploring the Android AppBundle,作者Joe Birch。目录App bundle 格式拆分 APKs构建和分发 Android App BundleBundle 工具动态服务功能动态提供功能我实际会节省多少大小?今年(2018年)在 I/O 上宣布了大量令人兴奋的事情 - 我最关注的一件事是新的 app b...翻译 2019-03-01 23:20:33 · 4499 阅读 · 0 评论 -
将您的 Android 应用程序转换到 Jetpack
原文链接谷歌已经将他们的 support 库更名为 Jetpack(又名 AndroidX)。开发人员需要对此进行更改。本文将解释这意味着什么,以及如何开始转换您的项目以使用新组件。Jetpack走向未来什么是 Jetpack?Android Jetpack是一组库,工具和架构指南,旨在使构建 Android 应用程序变得容易。它旨在提供通用的基础结构代码,以便开发...翻译 2019-03-01 11:15:42 · 687 阅读 · 0 评论 -
关于 ArcGIS Runtime SDK for Android 10.2.9 中的地物点击事件
目录1.关于onSingleTap(float x, float y) 方法2.识别地图上的marker graphic3.识别地图上的 GeometryFeature4.需要注意的点1.点击事件之前2.加载离线 .shp 文件3. 处理 FeatureLayer 中没有要素的情况4.居中地物5.关于 Fragment 或者 Activity 中的Map...原创 2019-02-28 10:47:35 · 1801 阅读 · 0 评论 -
适用于 Android 初学者的 Dagger 2 - 进阶第一部分
原文链接目录系列目录Dagger2 前情回顾..前言Android 家族概念灵感项目说明涉及的依赖要解决的问题让我们把事情弄复杂点秘密依赖关系图使用 Dagger 2 处理依赖注入但是有一个问题!总结下一步是什么?这个故事是该系列的第六部分,适用于Android 初学者的 Dagger 2。 如果您没有阅读上一个,可以从下面开始。...翻译 2019-02-22 23:32:30 · 310 阅读 · 0 评论 -
监听 Android 设备网络状态的理想实践
目录1.Android 5.0 以下版本2. Android 5.0 及以上版本3.Android 7.0 及以上版本4.代码实现App都需要监听 Android 设备的网络连接状态,典型的例子就是在下载大文件前,需要判断当前是否正在使用 WIFI 网络,若是则下载;如果使用移动网络,则需要弹框提醒用户可能会消耗流量并扣费。要监听网络状态,也需要考虑 Android 版本差...原创 2019-02-22 13:02:59 · 2012 阅读 · 0 评论 -
App 快捷方式——快捷方式的最佳实践
原文链接在设计和创建应用程序的快捷方式时,请遵循以下准则:在设计和创建应用程序的快捷方式时,请遵循以下准则:遵循设计指南要使应用程序的快捷方式与系统应用程序使用的快捷方式在视觉上保持一致,请遵循应用程序快捷方式设计指南。仅发布四个不同的快捷方式虽然 API 目前支持在任何给定时间为您的应用程序组合最多五个静态和动态快捷方式,但我们建议您仅发布四个不同的快捷方式,以改善其在...翻译 2019-01-17 09:39:56 · 618 阅读 · 0 评论 -
App 快捷方式——管理快捷方式
原文链接目录快捷方式的行为快捷方式可见性快捷方式显示顺序管理多个 intents 和 activities分配多个 intents从另一个 activity 开启一个 activity设置 intent flags更新快捷方式处理系统区域设置更改跟踪快捷方式用法禁用快捷方式速率限制备份还原其他资源创建快捷方式后,您可能需要在应用的生命...翻译 2019-01-16 15:50:11 · 1119 阅读 · 0 评论