安卓开发的小技巧(2)

637 查看

欢迎阅读《安卓开发的小技巧》系列的第二篇!就像我们上星期在第一篇小技巧文章里说的那样,这是一个不定期更新的博文系列,安卓开发团队会在这里和大家分享开发的建议和小技巧。

我们鼓励团队中的每个人每周都尽可能多地分享小技巧,尽管有些小技巧对他们来说可能是显而易见的。

毕竟,你根本不知道什么时候,你分享的一条信息会让人们学到新的知识。我们真心希望这周的小技巧会对你有所帮助。

技巧 1
如果安卓在应用程序运行时,决定更新系统的网络视图组件,这样会使你的应用程序崩溃:http://stackoverflow.com/questions/29575313/namenotfoundexception-webview

技巧 2

在 MaterialDesign 中,一些视图必须遵循标准的填充和边距。

除非你训练有素能看出填充的错误,并且已经发现这段小技巧中每个单词间都有两个空格,那你还是赶紧来试试这个 app 吧,它能确保每个元素能在 app 中恰好排成一排: https://play.google.com/store/apps/details?id=com.faizmalkani.keylines

译者注:该段英文原文的每个单词间有两个空格。

技巧 3

会返回一个(列表项)的位置,就算你从适配器列表中移除一项(列表项也能返回),因为这个view(视图)可能正在滑出可视区域,但是它还在RecyclerView中。

技巧 4

针对 API 23 以前版本的应用程序,GET_ACCOUNTS 是一个运行时的权限,不能在权限页面上禁止它(事实上,如果这是在联系人群组中唯一的权限,那么你甚至都看不到联系人群组的选项)。这打破了许多 app 对存在一个用户的假设。

技巧 5

Chrome 改变了它处理 deep links 的方式。你不可能仅仅只是在地址栏中键入一个 URL,就能意外触发一个 deep link。

举个例子,你过去常常是在 Chrome 地址栏键入“pandora.com“,就会打开Pandora 应用程序,而不是把用户导航到 Pandora 的网页。新的改进是,用户的的确确会被带到 Pandora 的网站。

当然,为了能够从你的网站 deep link 到一个应用程序,你需要用下面的新格式来规范链接的格式:

intent:

例如:

专业建议:你也可以在链接中包含一个回退的URL,或者是一个包名。这样可以在用户没有安装 app 时,提供回退的功能。

Chrome 首先会检查回退的 URL,并将用户导航到那里。如果没有提供回退的 URL,Chrome 会查找包名,之后会把用户带到Play Store(安卓市场)去下载安装包。

如果用户没有安装 app 并且(链接)中也没有提供回退地址,用户会看到一个 404 Not Found 的页面。在这里可以了解更多信息:https://developer.chrome.com/multidevice/android/intents

技巧 6

使用支持 23.0.0 版本 的 Loaders 时要注意,因为 Fragment 与 Activities 协同工作方式的改变,一个 bug 也随之产生,这个 bug 会导致 Loaders 在横竖屏切换时丢失。

这个错误虽然在 23.1.0版本中已经被修正了,但是依然出现了在child fragments中 Loader 在横竖屏切换时丢失的问题。目前修正这个问题的方案就是使用低于 23.0.0 的版本。

技巧 7

在 OSX 中,你可以拖动光标到显示屏底部并且持续下拉,这样可以在不同的显示屏中唤起 Dock 栏。

严格来说,这个问题与安卓无关,但是如果你的 Mac 上有多个显示屏,那么这个问题可能时常会让你抓狂。

如果你的 Dock 不是设置在底部而是其他地方,那么你可以查看一下其他情况的评论。

技巧 8

在可能的情况下,使用

而不是通过方法返回一个新的空集合。这个 collections 类负责维护一个不可变的空 list/set 实例,没有必要新建另一个(空集合)。