Navigation 指南

Navigation 指南

[TOC]

由于官网暂时没有中文版本,所以在这里根据内容抽空做了一些中文的版本.

Navigation 是用来管理你的app中内容的跳转,返回等操作.它主要包含了以下三个部分:

  • Navigation graph : 一个 xml 资源包含了所有的导航相关的信息. 这些信息包含了你app里所有独立的内容区域,也就是 destinations .
Read More

开始使用 Navigation

开始使用 Navigation

[TOC]

由于官网暂时没有中文版本,所以在这里根据内容抽空做了一些中文的版本.

开始使用

依赖引入

1
2
3
4
5
6
dependencies {
def nav_version = "2.1.0-alpha05"
implementation "androidx.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "androidx.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

最新版本清关注官方版本 https://developer.android.google.cn/jetpack/androidx/releases/navigation#declaring_dependencies

创建一个导航图

Navigation 发生在 app 内目的地之间的跳转.这些目的地通过action 进行连接.

Read More

使用 Lint 来获取性能贴士

使用 Lint 来获取性能贴士

[TOC]

背景

当我们在编写 Android 代码的时候如何能够快速优化我们的代码呢?

Android 为我们提供了一个 Lint 的工具,它可以静态检验出我们代码里的很多问题.风格,内存泄露,过度绘制等等…

使用方法

在 Android studio 的菜单中选择 Analyse -> Inspect Code 就可以进入检查页面了.

他还可以在设置里的 Editor -> Inspections 中设置提示的等级,以及自定义检查项,可以说是非常好用的功能了.

Read More

自动版本号发布

自动版本号发布

[TOC]

背景

由于手动升级版本号等操作容易被遗忘和操作错误,,所以要找到一个可以自动管理版本号的方式.

内容

版本控制主要有这么两个属性:

  • android:versionCode : 整数,是内部版本号,用于判断一个版本是否比另一个版本新,用户并不需要看到。通常是跟随着发布版本增加该code。如果安装的app 的 versionCode 比当前该 app 的 versionCode 小的话会导致安装失败,提示无法降级安装.

Read More

Gradle 使用技巧 [Chinese ver]

Gradle Skill

[TOC]

BuildConfig字段

BuildConfig 字段有默认生成的和自定义的字段,他们在编译后会自动生成到 app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件。内容如下:

1
2
3
4
5
6
7
8
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0.0";
}

这是一般工程里都会有的字段.

这里要介绍的是自定义的字段,我们通过自定义的字段可以配置不同 buildTypes 和不同版本的字段。可以用它来便捷的控制许多功能,比如 Log 打印等等。

自定义字段

Read More

Java 调试中你可能会遇到的问题以及如何解决他们

[TOC]

原文链接

当你的生产环境发生了异常的时候,事情变得艰难.Made Up Stats™ 的科学研究表明开发者团队会收到比平时更大的压力,咖啡杯脏的比平时快3倍而且上帝杀死了两只小猫因为一只是不够的(嗯…. 这个猫的梗有点污,原文是 god kills 2 kittens because one is just not enough. 查了一下取自一个梗…每当你手淫的时候,上帝会杀死一只猫).在下面的内容中我们将会分析你在调试生产环境的代码面对的主要的问题.接下来让我们用一个正直的警告来开始,这是我们的法律部门强迫我们放在这里的.

警告: 下面的内容包含一些开发者会觉得困扰的生产环境的 bug 的准确描述.

Read More

实现键值对存储 第五部分 Hash table 实现

实现键值对存储-第五部分: Hash table 实现

原文链接

这篇文章是 IKVS 系列的第五部分,”实现一个键值对存储”.你也可以查看 Table of Contents 来查看其他部分.

在这篇文章中,我将会学习C++中实际的 hash table 来理解它的瓶颈在哪里.Hash 函数是 CPU-密集型的操作应该要进行优化.然而,大多数的 hash table 的机制都只是关注于高效的内存和I/O读取,这也是这篇文章主要的焦点.我将会学习三种不同的 C++中的hash table 的实现,同时包含内存中的和硬盘中的,并且会观察这些数据都是怎么组织和访问的.这篇文章将会包含以下内容.

[TOC]

kvstore-part5-intro

Read More

LeetCode 8. String to Integer (atoi)

[English ver]

8. String to Integer (atoi)

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

Update (2015-02-10):
The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition.

Read More

LeetCode 8. 字符串转整数

[Chinese ver]

8. 字符串转整数 (atoi)

[TOC]

实现一个 atoi 方法来将一个 string 转换成一个 integer.

提示:仔细的思考所有可能的输入情况。如果你想要一个挑战,请不要看以下内容并问你自己什么是可能的输入情况。

注意:模糊的指定输入范围就是这个题目的目的(比如没有给输入规范)。你负责收集前面所有的输入要求。

Read More

Serializable

Serializable

通过实现 java.io.Serializable 可以让 class 实现序列化的功能,否则无法使用序列化的功能。一个实现序列化的类的子类都是可以进行序列化的。Serializable 接口没有方法,字段等只是一个标记它是可以序列化的作用。

序列化是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或在网络中传送),并在需要的时候恢复原先状态的过程。

当子类实现了 Serializable 接口而父类没有实现的时候,父类要有一个可以访问的无参构造函数。

在反序列化的时候,没有实现序列化的类字段将会使用 public 或者 protect 的无参构造函数进行初始化。无参构造函数必须是实现序列化的子类可访问的,

如果需要在序列化和反序列化的时候进行一些特殊操作的话,需要自己实现以下某些方法:

Read More
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×