自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

未名部落格

风他不肯说,云悄悄飘过

  • 博客(50)
  • 收藏
  • 关注

翻译 Kotlin Lazy vs Lateinit 属性. 何时使用哪个属性?

原文链接。Kotlin提供了许多很棒的特性。我们可以利用这些功能,快速构建高质量的应用程序。在所有这些特性中, 和 是重要的初始化属性。有必要知道何时使用 以及何时使用 初始化。有时变量的值在其声明位置并不可用。对于 Android 开发者来说,一个明显的例子是在 或 中使用的 UI 小部件。直到 或 方法运行,整个 activity 中用于引用小部件的变量才能初始化。本例中的 ,例如:示例1.1无lateint的对象初始化必须初始化变量。由于我们还不能知道值,一种标准的技术是使变量可

2022-07-01 01:02:23 461

翻译 使用 Coroutines(协程) 和 Flow(流) 的 LiveData -第二部分:使用架构组件启动协程

本文是我在 2019 年 Android 开发者峰会上与 Yigit Boyar 的谈话总结的第二部分。使用协程和流的 LiveData (ADS 2019)https://youtu.be/B8ppnjGPAGE第一部分:响应式 UI第二部分:使用架构组件启动协程(本文)第三部分:LiveData 和协程模式Jetpack 的架构组件提供了许多快捷方式,所以您不必担心作业和取消。你只需要选择你的行动的作用域:ViewModel 的作用域这是启动协程最常见的方法之一,因为大多数数

2021-09-28 13:35:10 554

翻译 使用协程(Coroutines)和流(Flow)的 LiveData -第一部分:响应式UI

本文是我在2019年Android开发者峰会上与Yigit Boyar谈话的总结。带有协程和流的 LiveData(ADS 2019)第一部分:响应式UI(本文)第二部分:用 架构组件(Architecture Components)启动协程第三部分: LiveData 和协程模式第一部分:响应式UI从 Android 早期开始,我们很快就了解到Android 的生命周期很难理解,充满了边缘情况,保持清醒的最好方法是尽可能地避免它们。 为此,我们推荐分层架构,这样我们就可以...

2021-09-24 12:07:00 460

原创 Java异常声明遇到继承关系

当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常。因为我们有可能拿着子类的对象当作父类的对象来看待(向上造型),在通过父类的变量去调用子类的函数的时候,我们要处理好所有的异常。在子类的构造函数中,必须声明父类可能抛出的全部异常。构造的过程当中,会自动调用父类的构造,所以父类的构造所会抛的所有的异常都需要声明,当然你也可以加自己的异常。...

2021-09-22 14:26:43 181

翻译 在 Android 12 中使用你的微件做更多事情!

原文链接。在 Android 12 中使用你的微件做更多事情!这篇文章是我写的关于更新 Android 12 微件的小连载文章的第二篇。在上一部分中,我们探索了一些简单的方法来实现对app用户高度可见的可视化更新。在本部分中,我们将介绍一些更高级的功能,使您的微件更具交互性,更易于配置,并在 Android 12 上提供更好的UI体验。更简单的配置在 Android 12 之前,重新配置小部件意味着用户必须删除现有的微件,并使用新配置再次添加。Android 12 以多种方式改进了微件的配置

2021-09-17 18:03:34 549 2

翻译 为 Android 12 更新你的微件(Widget)

很长时间以来,微件(Widgets) 一直是Android核心体验的一部分,许多应用程序有效地使用微件来增加用户参与度。用户喜欢微件,因为它能够在不启动应用程序的情况下使用应用程序的功能,并自定义设备的主屏幕。Android 12更新了现有的微件API,并修改了微件的设计,使之与“Material You”的设计语言保持一致。这些更改允许您使用设备主题颜色和圆角来构建更好看的微件,同时增强 搜索和放置微件 的可发现性和视觉效果。​

2021-09-15 17:39:02 1136

原创 could not open '.git/COMMIT_EDITMSG': Permission denied

打开仓库目录文件夹,选择显示隐藏文件夹,找到.git/COMMIT_EDITMSG 文件,删除该文件,重新 add 、commit 。

2020-04-17 11:21:53 4006 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 889

原创 自定义验证码输入控件

控件代码深度参考了掘金文章Android仿滴滴出行验证码输入框效果,增加了 setText() 方法控件采用多个横向排列的 EditText 组合控件来实现验证码录入框。自定义属性文件 attrs.xml <!--自定义短信验证码输入控件声明--> <declare-styleable name="vericationCodeInput"> ...

2019-07-29 21:11:24 452

原创 Android Studio mPaaS 插件使用问题记录

在使用mPaaS插件生成热修复文件时,key strore path 一项填入的路径不能包含空格,否则会无法生成热修复.jar文件,如下图:********************************************************** 2020.1.3更新 *****************************************************...

2019-07-15 14:58:23 900

翻译 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 284

翻译 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 166

原创 数据结构概述

以下内容是本人学习数据结构的记录,并非原创,只是为了加深印象并留作参考。1.数据结构的定义数据结构是计算机科学的基本内容之一,它研究的是程序设计中计算机操作对象以及它们之间的关系和运算,也就是研究如何在计算机中组织数据,如何处理数据,进而更好地利用数据的思维逻辑和方式方法。具体地说,研究数据结构一般包括三方面的内容,即数据的逻辑结构、数据的存储结构以及在这些数据上定义的运算的集合。通常...

2019-05-09 10:41:39 531

翻译 Android 生命周期备忘表-第一部分:单一 Activities

翻译自 The Android Lifecycle cheat sheet — part I: Single Activities。Android 旨在为用户提供支持,让他们以直观的方式使用 apps。 例如,一个 app 的用户可能会旋转屏幕,响应通知或切换到其他任务,他们应该能够在此类事件之后无缝地继续使用 app。为了提供这种用户体验,您应该知道如何管理组件生命周期。组件可以是 Ac...

2019-04-25 23:06:57 134

原创 一份你可能需要的用中文注释的 Looper 源码

Straightforward/** * 用来为一个线程运行消息循环的类。默认的线程本身是没有与之相关联的消息循环的; * 要创建一个的话,在将要运行循环的线程中调用 {@link #prepare},然后调用 * {@link #loop} 来让它处理消息,直到循环停止。 * * * <p>与消息循环的大多数交互都是通过 {@link Handler} 类进行的...

2019-04-22 22:34:36 286

翻译 探索 Android Q:位置权限

原文链接 Exploring Android Q: Location Permissions。本文最初发表于https://joebirch.co/上周(本文发表于2019.3.29)我们看到了 Android Q 测试版的发布这个 Android 版本带来了一系列令人兴奋的变化,我们需要让我们的 apps 为这些变化做好准备。在这个文章系列中,我将深入讨论其中的每个变更,以便...

2019-04-22 13:39:42 3123

原创 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 16474 2

原创 使用 Java Socket 和 ServerSocket 实现客户端服务端通信的例子

1.客户端和服务端 one to one客户端import java.io.*;import java.net.Socket;/** * 客户端 */public class Client { public static void main(String[] args) { try { // 1.创建客户端socket,指定服...

2019-04-20 19:30:28 1015

原创 Java 中线程的停止方法

首先不要使用 thread.stop()方法,该方法会强制线程立即停止执行,不安全,造成不可预知的错误。推荐使用 thread.interrupt() 来温和地停止线程,该方法不立即、不强制停止线程,默认是不停止线程的。只是标记希望该线程被interrupt。该方法需要被打断的线程检查 interrupt 状态才可停止。isInterrupted() 方法只是单纯检查自身所在线程是否被标记为...

2019-04-20 17:39:05 152

翻译 ViewModels 和 LiveData:模式 +反模式

原文链接 ViewModels and LiveData: Patterns + AntiPatterns。Views 和ViewModels分配职责使用 Architecture Components 构建的 app 中实体的典型交互理想情况下,ViewModels 不应该知道任何关于 Android 的事情。这提高了可测试性、泄漏安全性和模块性。一般的经验法则是确保...

2019-03-31 15:56:50 804

翻译 让我们来谈谈 Android(国外 Android 学习资源)

原文链接 Let’s talkAndroid。无论你是编程新手还是经验丰富的开发人员,我都准备了一系列资源来教你 Android App 开发,从你的第一个 app 到高级主题。

2019-03-29 13:00:47 658

翻译 剖析 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 278

原创 html 自定义简单的时间轴 timeline 并与 table 图表和 echarts 进度甘特图联动

1.需求最近有需求需要实现 &lt;table&gt; 图表与 eharts 柱状图的联动。完整的效果图如下所示这里时间轴要实现的效果要基本如下图所示该时间轴并不是要实现选中单独的某一个月份并查看单月的数据,而是要将当前数据的时间跨度控制在时间轴的跨度之间,在点击后退一个月或前进一个月的时候,对应的图表数据需要同步过滤并更新。2.分析echarts 本身是有时间轴...

2019-03-16 16:54:02 7035 8

翻译 充分利用 Kotlin

翻译自Taking Advantage of Kotlin codelab。目录1.介绍你将构建什么你会学到什么你需要什么2.准备好开始下载代码应用概述Contact.javaContactsActivity.java配置Kotlin3.Kotlin 转换基础知识将联系人 POJO 转换为 Kotlin 数据类Contact 类文件的...

2019-03-07 17:21:44 835

翻译 探索 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 4288

翻译 将您的 Android 应用程序转换到 Jetpack

原文链接谷歌已经将他们的 support 库更名为 Jetpack(又名 AndroidX)。开发人员需要对此进行更改。本文将解释这意味着什么,以及如何开始转换您的项目以使用新组件。Jetpack走向未来什么是 Jetpack?Android Jetpack是一组库,工具和架构指南,旨在使构建 Android 应用程序变得容易。它旨在提供通用的基础结构代码,以便开发...

2019-03-01 11:15:42 659

原创 关于 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 1629

翻译 作为 Android 开发人员,你应该熟悉的 50 个 Android Studio 提示,技巧和资源

原文链接 50 Android Studio Tips, Tricks &amp; Resources you should be familiar with, as an Android Developer。目录视觉快捷键和有用的命令插件资源本文的目的是列出 Android Studio 的有用提示、技巧、快捷键和资源,这些将提高您的整体效率和表现。显然还有更多的优化...

2019-02-27 17:00:52 387

翻译 适用于 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 367

原创 为 Snackbar 添加 “取消” 按钮

Material Design 是真的不错,但是其中的 Snackbar 却不流行,推出它的本意可能是取代 Toast,不过天朝没几家 app 用,只发现在微信上当收藏文章时底部提示 “已收藏   添加标签”,好像是个自定义之后的 Snackbar?!。Snackbar 上可以有一个操作按钮,像这样但是总觉得 Snackbar 上缺个取消按钮,或者是指定其他 action 的按钮, 既...

2019-02-26 16:43:49 1114

翻译 适用于 Android 初学者的 Dagger 2 - 进阶第一部分

原文链接目录系列目录Dagger2 前情回顾..前言Android 家族概念灵感项目说明涉及的依赖要解决的问题让我们把事情弄复杂点秘密依赖关系图使用 Dagger 2 处理依赖注入但是有一个问题!总结下一步是什么?这个故事是该系列的第六部分,适用于Android 初学者的 Dagger 2。 如果您没有阅读上一个,可以从下面开始。...

2019-02-22 23:32:30 178

原创 监听 Android 设备网络状态的理想实践

目录1.Android 5.0 以下版本2. Android 5.0 及以上版本3.Android 7.0 及以上版本4.代码实现App都需要监听 Android 设备的网络连接状态,典型的例子就是在下载大文件前,需要判断当前是否正在使用 WIFI 网络,若是则下载;如果使用移动网络,则需要弹框提醒用户可能会消耗流量并扣费。要监听网络状态,也需要考虑 Android 版本差...

2019-02-22 13:02:59 1842

翻译 应用程序架构指南(本文已过时,请点击原文链接查看最新官方文档)

原文链接目录移动应用程序用户体验一般架构原则关注点分离由 model(模型)驱动 UI推荐的应用程序架构概览构建用户界面获取数据连接 ViewModel 和 repository缓存数据持久化数据展示正在进行中的操作测试每个组件最佳实践附录:暴露网络状态本指南面向那些已经掌握了构建应用程序...

2019-02-20 09:31:19 6729 2

翻译 适用于 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 153

翻译 适用于 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 166

翻译 适用于 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 145

翻译 适用于 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 254

翻译 App 快捷方式——快捷方式的最佳实践

原文链接在设计和创建应用程序的快捷方式时,请遵循以下准则:在设计和创建应用程序的快捷方式时,请遵循以下准则:遵循设计指南要使应用程序的快捷方式与系统应用程序使用的快捷方式在视觉上保持一致,请遵循应用程序快捷方式设计指南。仅发布四个不同的快捷方式虽然 API 目前支持在任何给定时间为您的应用程序组合最多五个静态和动态快捷方式,但我们建议您仅发布四个不同的快捷方式,以改善其在...

2019-01-17 09:39:56 569

翻译 App 快捷方式——管理快捷方式

原文链接目录快捷方式的行为快捷方式可见性快捷方式显示顺序管理多个 intents 和 activities分配多个 intents从另一个 activity 开启一个 activity设置 intent flags更新快捷方式处理系统区域设置更改跟踪快捷方式用法禁用快捷方式速率限制备份还原其他资源创建快捷方式后,您可能需要在应用的生命...

2019-01-16 15:50:11 946

翻译 App 快捷方式——创建快捷方式

原文链接快捷方式通过帮助用户快速访问 app 的某些部分,为用户提供特定类型的内容。如何使用快捷方式提供内容取决于您的用例以及快捷方式的上下文是应用驱动还是用户驱动。 虽然静态快捷方式的上下文不会更改,并且动态快捷方式的上下文会不断更改,但两种情况下的上下文都是由您的应用程序驱动的。 如果用户选择他们希望您的应用向他们提供内容的方式,例如使用固定的快捷方式,则上下文由用户定义。 以下场景演...

2019-01-15 18:53:07 5754

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除