
Android
Chittyo
Stay hungry,Stay foolish。
展开
-
DiskLruCache 的使用及源码解析
DiskLruCache 用于实现存储设备缓存,即磁盘缓存,它通过将缓存对象写入文件系统从而实现缓存的效果。DiskLruCache 得到了 Android 官方文档的推荐,但它不属于 Android SDK 的一部分,它的源码及网址文末会贴出来。下面分别从 DiskLruCache 的创建、缓存查找和缓存添加这三个方面来介绍 DiskLruCache 的使用方式。原创 2020-11-11 15:41:18 · 2789 阅读 · 5 评论 -
LruCache 的使用及源码解析
常用的三级缓存主要是指 LruCache、DiskLruCache、网络,其中 LruCache 对应内存缓存、DiskLruCache 对应磁盘缓存。LRU 全称是 Least Recently Used,即最近最少使用策略,意思是当缓存到达限制时候,优先淘汰近期内最少使用的缓存,LruCache 和 DiskLruCache 都是采用 LRU 策略。比如说 Android 中常来缓存 Bitmap,我们先从 LruCache 中取,取不到再从 DiskLruCache 中取,也取不到的话,最后才从数据源原创 2020-10-27 16:20:21 · 2331 阅读 · 8 评论 -
Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultG
问题:在 Android Studio 项目中导入从 Github 上下载的 module 后,会报这个错:Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer解决方案:在导入的 module 的 build.grad原创 2017-11-10 14:15:00 · 724 阅读 · 0 评论 -
Error:Plugin with id 'com.github.dcendents.android-maven' not found.
BUG:Error:Plugin with id 'com.github.dcendents.android-maven' not found.解决方案: 在 Project 下的 build.gradle 里添加全局依赖://1.自动化maven打包插件 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'//2.自动原创 2017-10-31 13:39:22 · 407 阅读 · 0 评论 -
okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR
BUG:okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR原因是协议错误导致的,在实例化 okhttpclient 的时候用以下方法:okHttpClient = httpBuilder .protocols(Collections.singletonList(Pro原创 2017-10-31 13:23:45 · 16116 阅读 · 0 评论 -
笔记——Android 中的小细节
Q1: Android 在代码中使用 #ffffff 模式 设置背景色A1: mHolder1.mLlItemSsq.setBackgroundColor(Color.parseColor("#F7F4EF"));原创 2016-07-25 10:06:46 · 410 阅读 · 0 评论 -
Android 各大手机品牌手机跳转到权限管理界面
感谢分享概述最近项目中遇到这样个需求场景: 当我们的用户使用App时不小心拒绝了某项必要权限,而导致无法正常使用。这时候希望重新去打开该权限,那么问题来了,Android厂家定制的room五花八门,很多时候却发现找不到权限管理的入口。为了解决这一问题,如果我们应用中直接提供权限管理入口给用户,是不是会很方便的解决用户这一困扰呢?经过一番研究,整理出了大部分国产手机直接打开权限管理界面的方法:华为I转载 2017-10-31 10:57:35 · 1820 阅读 · 0 评论 -
Android各版本代号、版本号、API/NDK级别、发布时间
Android各版本代号、版本号、API/NDK级别、发布时间原创 2017-10-31 09:32:00 · 989 阅读 · 0 评论 -
module 的几种依赖方式的区别
module 的几种依赖方式的区别compilecompile 是对所有的 build type 以及 flavor 都会参与编译并且打包到最终的 apk 文件中。ProvidedProvided 是对所有的 build type 以及 flavor 只在编译时使用,类似eclipse 中的 external-libs ,只参与编译,不打包到最终 apk。APK只会打包到 apk 文件中,而不参与编原创 2017-10-30 18:06:59 · 1187 阅读 · 0 评论 -
com.android.build.api.transform.TransformException
因为项目做了自动化,故 “加固 apk“ 自然也要写入脚本,实现自动化 “构建、加固、重命名、登录 fir.im 、上传 apk“ 等一系列流程:今天在给项目增加 “腾讯乐固“ 的 leguapi.jar 后,构建、打 release 包时,发生 error 如下:错误信息:Error:Execution failed for task ':xxx:transformClassesWithJar原创 2017-10-30 15:32:59 · 463 阅读 · 0 评论 -
PopupWindow 适配 Android 7.0 、7.1
「问题描述」:正常显示: 显示错位: 「解决方案」:package com.chitty.views;import android.graphics.Rect;import android.os.Build;import android.view.View;import android.widget.PopupWindow;/** * Created by chitty on 2017/原创 2017-10-20 17:19:50 · 1523 阅读 · 0 评论 -
加固和混淆
1 什么是代码混淆代码混淆通常将代码中的各种元素(变量、函数、类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度。虽然代码混淆可以提高反编译的门槛,但是对开发者本身也增大了调试除错的难度。开发人员通常需要保留原始未混淆代码用于调试。2 代码混淆就安全了么代码混淆并不能从根本上阻止反编译等。因为代码混淆仅仅提高了阅读难度,但并不能真正阻止反编译。因此,对于高安全要原创 2017-10-27 13:32:15 · 3299 阅读 · 0 评论 -
延迟的几种方式
int delay = 1000;// 假设 1 秒的延迟一、线程 Thread new Thread(new Runnable(){ public void run(){ Thread.sleep(delay); handler.sendMessage();----通知主线程执行任务 } }).sta原创 2017-10-19 09:35:45 · 1031 阅读 · 0 评论 -
android 6.0 以上版本不显示按钮文字
经检查,原因是在 style.xml 中 <item name="colorAccent">@color/white</item>将 颜色改为非白色即可见: <item name="colorAccent">@color/green</item>解决方案 so easy ,排查起来还是不那么 easy .P.S. AppTheme 中的各个变量对应的内容原创 2017-10-19 09:24:23 · 461 阅读 · 0 评论 -
Could not find any matches for com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+ as no version
Long long ago , 项目中用到了微信分享,我是直接集成了微信的 sdk (没有用友盟的微信分享),之前做这一功能的时候,按照微信的官方文档做的,没有问题,也测试 OK 了,很顺利; 但是,今天运行项目的时候,Android Studio 突然抛出一个 bug,如下:Error:A problem occurred configuring project ':app'.> Could原创 2017-07-20 13:51:42 · 3782 阅读 · 0 评论 -
Mac 版 Android Studio 切 点9图
超 easy 使用 Android Studio 切点9图,仅作为笔记记录下: OK~原创 2017-10-24 13:58:06 · 1167 阅读 · 0 评论 -
Can't create handler inside thread that has not called Looper.prepare()
问题:Can't create handler inside thread that has not called Looper.prepare()情景:若在一个 Thread 中启动了一个 ProgressDialog 提示正在连接(即防假死),然后在 Handler 中 dismiss() 这个 ProgressDialog,若有错误信息则在线程中调用 Toast 提示,然后当程序运行到 Toa原创 2017-10-24 14:08:28 · 555 阅读 · 0 评论 -
用 adb 命令直接安装 apk 到手机
1)、用数据线连接 Mac 和手机;2)、打开终端,进入 apk 所在目录下cd /Users/Chitty/workspace/ProjectName/app/build/outputs/apk/ceshi/release/3)、在终端执行adb install ceshi-release-1.0.0.apk...原创 2018-11-13 14:20:12 · 2174 阅读 · 0 评论 -
master 分支强制回退
前提是 去 GitLab 的 Settings - Repository - Protected Branches -unprojectgit reset --hard 4a5b7f5bgit push -f origin master原创 2018-11-13 14:18:26 · 1504 阅读 · 0 评论 -
Android Studio下 获取 应用签名以及 MD5、SHA1(签名)、SHA256 值 的命令
keytool -v -list -keystore /Users/Chitty/workspace/BookBlue/tina.jks原创 2018-11-13 14:14:56 · 688 阅读 · 0 评论 -
app:preDebugAndroidTestBuild
Android Gradle 报错: Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. Conflict with dependency ‘com.android.support:support-annotations’ in project ‘:app’. Resolved versions for a...转载 2018-06-20 17:05:26 · 511 阅读 · 0 评论 -
解决 ScrollView.setOnScrollChangeListener() API 23 及以上可用的限制问题
1、自定义一个类继承 ScrollViewpackage com.chitty.views;import android.content.Context;import android.util.AttributeSet;import android.widget.ScrollView;/** * scrollview 滑动控制高度 * Created by Chitty o...原创 2018-04-20 14:49:11 · 2695 阅读 · 0 评论 -
Android 应用获取通知栏权限
工具类 NotificationsUtils:package com.xxx.ua.utils;import android.annotation.SuppressLint;import android.app.AppOpsManager;import android.content.Context;import android.content.pm.ApplicationInfo;impor原创 2017-11-24 13:19:55 · 6002 阅读 · 0 评论 -
Android Studio 编译时提示 Error: Please select android sdk.
编译运行项目时报错如下:Error: Please select android sdk.在 app.iml 文件中 检查以下代码是否存在,不存在则添加上,即可正常运行。原创 2017-12-12 09:56:14 · 19109 阅读 · 8 评论 -
Retrofit response 回调封装
Retrofit response 回调封装:import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import com.hyphen原创 2017-11-22 11:39:25 · 2343 阅读 · 0 评论 -
shell 脚本自动发布 APP
shell 脚本自动发布 APP 记录原创 2017-11-22 10:52:16 · 1426 阅读 · 0 评论 -
重写滑动监听的 WebView
package com.chitty.views;import android.content.Context;import android.util.AttributeSet;import android.webkit.WebView;/** * Created by chitty on 2017/8/29. * 重写滑动监听的 WebView */public class NewWe原创 2017-10-25 14:39:48 · 490 阅读 · 1 评论 -
retrofit 2.0 如何通过 HttpLoggingInterceptor 打印服务器响应的 json ?
使用 Retrofit 网络请求框架,首先要在 app 的 build.gradle 下添加如下依赖:compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'然后,创建一个 OkHttp3Utils 工具类:import android.content.C原创 2017-07-23 21:57:33 · 6524 阅读 · 0 评论 -
Android 通过 localstorage 向 HTML5 传参
现在的 APP,Android 与 H5 混合开发已很常见。当 Android 通过 WebView 加载 H5 页面,且需要向其传参时,可以用 loaclstorage 来实现。代码如下: WebView 先要设置如下属性: webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setApp原创 2017-07-23 21:25:34 · 2409 阅读 · 0 评论 -
WebView 中 H5 页面的软键盘遮挡输入框
如题,WebView 中 H5 页面的软键盘遮挡输入框,于是在 AndroidManifest.xml 中该 Activity 中 添加如下代码:android:windowSoftInputMode="stateAlwaysHidden|adjustResize"但,无效。然后试了 adjustPan | stateHidden | adjustResize 等各种组合均无效。最终,在 setCo原创 2017-07-23 21:01:35 · 5235 阅读 · 0 评论 -
Android UrlEncodedFormEntity() 和 StringEntity() 的区别
在做安卓端向服务器使用 http 请求数据时,使用post方式,并且需要传递参数。遇到的问题 及 解决方法如下: 起初,我使用了 UrlEncodedFormEntity() 这个方法,但是后台报错,无法解析json内容;httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));这是后台获取到的原创 2016-03-16 11:19:25 · 2524 阅读 · 0 评论 -
SuperNotCalledException
项目运行后报错: android.util.SuperNotCalledException: Activity {com.chitty.easylottery/com.chitty.easylottery.activity.RegisterActivity} did not call through to super.onDestroy();解决方法: 在原创 2016-03-21 17:26:34 · 569 阅读 · 0 评论 -
Android 如何定义全局变量 以及 static静态变量使用误区 的问题
static 修饰的是 静态变量,它的优点是 使用很方便,在不同的类和包中都可以使用,在虚拟机中单独占用内存。不过使用 static 有一些不太好的地方:项目中 使用 static 的很多地方会莫明的出现空指针异常的错误,经过排查,可能就是static的问题。如此来说,static 静态修饰在Android的开发中是不是很危险?或许我们可以说如果是static User u = new原创 2016-03-21 18:16:49 · 10098 阅读 · 2 评论 -
Android 中使 EditText 失去焦点,禁止弹出软键盘,及 弹出软键盘后 EditText 自动上移 不致被遮挡
在应用中,有时候一进入某页面, EditText 默认会自动获取焦点,弹出软键盘,遮挡界面,用户体验很不好。下面我们来解决一下此问题:(亲测有效哦~)在 AndroidManifest.xml 中的 相应的 activity 的 标签中 加入下面三句代码 即可; android:hardwareAccelerated="false" android原创 2016-04-27 16:52:39 · 1069 阅读 · 0 评论 -
Android app 判断是手机还是平板
方法一:public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)原创 2016-06-30 11:46:05 · 3696 阅读 · 0 评论 -
Android 实现 session 保持
最近在开发项目的过程中,遇到 android 与 web 服务器要在同一 session 下通信的问题。先来了解一下 session 机制 和 session 的实现方式:Session机制Session 机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先原创 2016-04-10 17:35:40 · 5227 阅读 · 1 评论 -
从字节码视角看java字符串的拼接
搞java的都知道,string直接用+拼接的时候,javac编译会进行优化,因此字符串拼接也推荐使用stringbuffer或者stringbuilder。那到底是怎么优化的呢?简单的代码如下 package test;public class Java { public String test(String s1, String s2) { return s1 + s2转载 2016-06-23 10:37:31 · 817 阅读 · 0 评论 -
关于Android编程文件路径中含有中文字符的问题解决办法
感谢分享 http://blog.sina.com.cn/s/blog_5342e45b01012fu2.html 在网上看到有朋友说,在Android编程中如果实现文件的上传下载过程中,如果遇到文件路径中有中文,比如/sdcard/测试文档.txt或者d:/计算机.xls就会抛出FileNotFoundException的异常,很多论坛中提示大家用URLEncoder.encode(转载 2016-07-18 15:14:04 · 6740 阅读 · 0 评论 -
Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例
感谢分享 http://www.7po.com/thread-564068-1-1.html第一种方法:采用Android自带的直接控制焦点上下左右的方法。这种方法的前提是必须知道每个view的id,因此在进行布局时有必须要通过view.setId(…)指定view的特定ID,然后通过view.setNextLeftView(…)等四个方法控制该view的上下左右移动后所到转载 2016-07-13 12:22:41 · 8253 阅读 · 0 评论 -
JAVA字符串格式化-String.format()的使用 及 Android 中 string.xml 中 字符串格式转化
常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Lo转载 2016-05-26 11:13:41 · 3374 阅读 · 0 评论