Pig Cat

Full-Stack, Android, AI

Android神经网络(Neural Networks API)初探

见微知著。

谷歌早在Android 8.0就推出了神经网络API,不过现在网上资料仍旧不多,随着TensorFlow Lite的成熟,底层API更是无人问津。 前言 Android Neural Networks API (NNAPI) 是一个 Android C API,专为在 Android 设备上运行计算密集型运算从而实现机器学习而设计。NNAPI 旨在为更高层级的机器学习框架(如 T...

RecyclerView中DiffUtil的一些注意事项

见微知著。

节能刷新 移动设备屏幕大小有限(不得不说我是顽固的小屏爱好者,大于5.5寸难以接受,时代已经抛弃我了哈哈),列表(List)可以说是一个出现非常高频的交互设计。大多数情况下我们的列表不仅仅是一次性加载本地数据,而要应付来自网络的各种动态内容,可能是增加、删除等操作。 在Android开发中,一个耳熟能详的方法就是 notifyDataSetChanged ,在适配器(Adapter)的设...

MTK设备上DuraSpeed导致Service无法启动的问题

知其所以然。

没想到联发科还会改framework,有点小惊讶…… 背景 问题的起因是我们的系统应用无法调起与其他部门联动的某个Service组件了。查日志发现有这么一行: 1276-2330/system_process D/ActivityManager: bringUpServiceLocked, suppress to start service! 提示内容大概是说Service...

Win10家庭版如何正确关闭自动更新

专治各种小毛病。

之所以不更新,是因为你太好用,舍不得你出问题。哈哈哈哈哈哈啊哈哈哈! 背景 Windows10还是很漂亮很好用的,大部分同学购买的品牌机也都会预装正版Win10,不过是家庭版的(个人用户一般也不需要专业版,比如我这种装双系统的只把Win10拿来打游戏),然而,家庭版系统要用常规手段是没法彻底关闭自动更新的。 微软也非常不给面子,各种给你悄悄打开,当你关机时,你会吃惊地发现“更新并...

避免Android定制ROM中的EditText出现pop弹窗

知其所以然。

问题 可能看到标题的同学一头雾水,这是什么东西,其实类似于你长按文本时出现的复制粘贴pop弹窗。在一些定制ROM中,厂商为了某些方便用户的特殊功能会增加文本输入检测和自定义弹窗,举例: 比如在你输入一些邮箱时,会自动弹出这种pop(并不需要你长按),且这个并非系统应用才有的,而是直接影响了所有EditText。 对于一些高度定制化UI的应用来说,这个可能影响用户体验。下面给出两种解决办法(...

为何点击推送通知打不开Activity?Calling startActivity() from outside……

知其所以然。

小米推送Android SDK有这么一个耳熟能详的方法: /** * 接收服务器向客户端发送的通知消息,在用户手动点击通知后触发 */ public void onNotificationMessageClicked(Context context, MiPushMessage message) { ... context.startActivity(intent); } 如果在其...

源码茶舍之PackageManager获取注册Service数量问题

多查查,也不难。

问题 今天有朋友遇到个问题,说bindService失败了,查了几步发现是由于PackageManager获取不到对应的Service组件导致的。具体示例代码如下: val serviceInfos = packageManager.getPackageInfo("com.xxx.xxx", PackageManager.GET_SERVICES).services Log.d("TES...

Deepin系统add-apt-repository失败的问题

专治各种小毛病。

不只是安装software-properties-common那么简单…… 问题 目前Deepin系统版本为15.11,貌似在15.10时切到了Debain的软件仓库,而不再是Ubuntu了,虽说比较稳定,但还不够新,比如git,版本就没有官方的新。 于是我尝试 git官方的办法: sudo add-apt-repository ppa:git-core/ppa 报错,...

Gradle命令编译失败NoClassDefFoundError和VerifyError

多加思索。

问题 不知道大家在编译gradle项目的时候习惯直接在Android Studio这种IDE里面还是命令行操作。 今天在Deepin系统里面用命令编译: ./gradlew assembleDebug 直接报错: Exception in thread “main” java.lang.NoClassDefFoundError: org.gradle.wrapper.Boot...

Deepin标题栏太高的解决办法(自定义高度)

专治各种小毛病。

Deepin 15.11已经发布一段时间了,前段时间折腾了一下,把我的Ubuntu换成了Deepin(有兴趣可以看看我的另一篇:Deepin15.11初体验及问题解决),总体感觉非常好。 依我个人习惯,目前有两点不是很能接受: 第一就是软件源貌似是debian stable的,所以很多软件版本比较老,比如git版本,远低于官方版本,这个还是有一些解决办法的,具体的我就没去折腾了,Dee...

Deepin15.11初体验及问题解决

专治各种小毛病。

Deepin发展也有不少年了,最近还和华为的笔记本合作预装。之前我一直都用Ubuntu做日常开发,现在心血来潮也想折腾一下Deepin哈哈, 本文主要讲从Ubuntu无痛迁移到Deepin的安装过程、N卡显卡驱动等一系列小坑的解决。权当总结吧! 下载和制作启动盘 这个就不讲了哈,直接在官网下就行了,包括启动盘制作工具。 http://www.deepin.org/download...

Docker安装Ubuntu镜像并保存且修改IP及Mac地址

入坑易,出坑难。

本文仅作为一个Docker入坑笔记。 主要介绍: 1、Docker在Linux上的安装配置; 2、在Docker容器中安装一个Ubuntu镜像并保存更改; 3、以任意IP地址和Mac地址启动刚才安装的Ubuntu镜像。 运行环境 简介一下我的环境,方便参考:Linux 4.15.0-64-generic #73~16.04.1-Ubuntu SMP Fri Sep 13 09:56...

OkHttp自定义重试拦截器出现IllegalStateException: cannot make a new request……异常

拦截器玩出花。

问题 OkHttp自定义重试拦截器常见实现方式: private static class RetryInterceptor implements Interceptor { @Override public okhttp3.Response intercept(Chain chain) throws IOException { int retryCoun...

Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula

同样适用于Deepin哦!

预览 先来张图给大家感受下效果,然后我再慢慢道来过程,保证你避免每一步的坑。 我们要做什么 1、由于Source Insight(以下简称SI)是Windows应用,所以不能直接安装在Linux上,于是我们要借助wine,所以第一步会介绍wine的安装过程和坑; 2、介绍SI在Linux(以Ubuntu 16.04为例)上的安装,并介绍如何导入免费证书(个人建议大家有条件还是付费支持一下S...

Kotlin操作符快速获取爸爸的儿子的狗的名字

学以致用。

NPE(NullPointerException)是最低级且也最容易犯的错,也是最喜欢遇到的Bug因为好解。 本文适合Kotlin入门萌新食用,大佬轻喷哈哈哈! 问号N连帮你空处理(?) 假如服务端返回一个json嵌套了各种数据,映射成POJO大概是这样: // 此处为简洁省去getter和setter public class TestParent { private ...

OkHttp拦截器实现禁止一切网络请求

拦截器玩出花。

我们在创建OkHttp客户端时,可以添加各种拦截器,这是我见过最有可玩性的库之一: OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .addInterceptor(new XXXInterceptor()) ...

OkHttp拦截器获取GET/POST请求参数并添加公共参数

拦截器玩出花。

我们在创建OkHttp客户端时,可以添加各种拦截器,真的很香: OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .addInterceptor(new XXXInterceptor()) .addInter...

OkHttp拦截器实现无网络时加载缓存,避免Unknown host异常

拦截器玩出花。

我们在创建OkHttp客户端时,可以添加接口数据缓存,真的很香: File cacheDir = ... // 缓存目录,可以是内部存储也可以是外部存储的目录 OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .cache(...

微信小程序任务栈实现原理

探寻小程序的根基。

背景 之前面试一些校招同学,聊到微信小程序是什么launchMode,其任务栈是如何实现的?很多同学只提到singleInstance,这是不合适的。 今天我们就猜测并解析一下微信主程序与小程序的关系与大致实现,最后给出源码,可以给大家作一个简单参考。 初探 既然要研究微信,那么我们就先打开几个小程序,再用adb命令看看任务栈信息。 在终端使用 adb shell dumpsys ac...

NDK开发中为什么除以0程序不崩溃?

教条不会告诉你的。

我们都知道不管是在Java还是在C++程序中,下面这段代码都会导致程序错误: int x = 10; int y = x / 0; ... 但是我今天发现了一个比较神奇的事情,把这段代码写成native方法后在Java层调用,竟然没有导致App崩溃,代码是这样子的: #include <jni.h> #include "logger.h" #ifdef __cplusp...