自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android自定义安全软件盘

3.增加DES/ECB/PKCS7Padding的加密方式,理论上引入的算法库可以支持的加密方式都可以做,只是目前项目中使用的是这种;研究了一下,主要涉及到自定义键盘,输入jni加密存储,全程在java内存中不出现明文密码,以及一些禁回写,禁截屏的操作。main分支在c层通过jni回调java层算法库进行加密,理论上明文在jni回调时还是会出现在java内存中。openssl分支在c++层使用openssl的加密库算法,实现真正意义的在java内存中不出现密码明文。1.使用CMake进行jni的编译;

2023-01-10 18:14:16 268

原创 Android7.x系统BadTokenException解决记录

问题:BadTokenException异常如下:Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@fcd9ef6 is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:806

2021-04-16 16:27:10 387

原创 由组织结构变更想到的

如果你从事系统设计工作,那么肯定听说过“康威定律”,它是由Melvin Conway在 1967 年提出的:任何设计系统(广义定义)的组织,必然会产生以下设计结果:即其系统的结构就是该组织沟通结构的写照。该定律通常以“编译器”为样例进行说明:如果有四个组在从事一个编译器相关的工作,那么这个编译器肯定是要分四个步骤的。这里的观点在于,解决方案是围绕团队结构(和团队沟通开销)进行“优化”的,而不一定是为了解决特定的技术或性能问题。康威定律一般都是以负面的角度来进行讨论的。比如,康威定律代表着你的应

2021-01-18 14:56:15 154 1

原创 Android webview 内存泄漏源码分析及处理办法

问题背景在排查项目内存泄漏过程中发现了一些由WebView引起的内存泄漏。问题描述项目中使用WebView的页面出现在多次进入退出时,发现内存占用大,GC频繁。使用LeakCanary观察发现有两个内存泄漏很频繁:我们分析一下这两个泄漏:从图一我们可以发现是WebView的ContentViewCore中的成员变量mContainerView引用着AccessibilityManager的mAccessibilityStateChangeListeners导致activity不能被回收造成

2020-12-30 17:21:00 468

原创 getActionBar()为null的解决方法总结

getActionBar()为null的解决方法总结前言在使用 ActionBar的时候,有时候会爆出空指针异常,这是因为应用没有获取到 ActionBar 导致的,而导致应用没有获取到 ActionBar 的原因比较多,所以我们下面就来总结一下 ActionBar 获取不到的错误原因。解决办法检查你的应用是否设置了没有 ActionBar 的主题Theme,或者直接设置了 NoActionBar或NoTitleBar 属性,主要要检查这几点:检查 AndroidManifest.xml 中的 标签

2020-12-28 16:45:31 318

原创 Android webview scrollview 冲突解决记录

问题来源:现在有个webview被放在了scrollview里,如何让webview滑动到顶或者底的时候把滑动事件交还给scrollview解决思路:核心思想就是利用webview.onOverScrolled方法重置父view的点击拦截onOverScrolled,onTouchEventfindViewParentIfNeeds:参考文档:https://www.jianshu.com/p/850816c3e294...

2020-12-15 14:05:21 276

原创 FileProvider详解

随着Android版本越来越高,Android官方对用户数据保护力度也越来越大。Android提供FileProvider类来供应用之间共享数据。如:<paths xmlns:android="http://schemas.android.com/apk/res/android"> <files-path name="my_images" path="images/"/> ...</paths>FileProvider所支持的几种path类型从

2020-12-10 16:43:39 8667 5

原创 Android中设置字体不随系统字体大小而变化

解决办法:一、我们在Application的onCreate方法中将APP中的res配置设置为默认:Resources res = super.getResources();Configuration config = new Configuration();config.setToDefaults();res.updateConfiguration(config, res.getDisplayMetrics());二、我们还可以在BaseActivity和BaseApplication里重写

2020-12-10 16:39:07 1082

原创 老项目androidx升级可行性验证

首先声明,老项目升级androidx存在一定的风险和不确定性,即使调整后也需要相当长的一段时间进行测试,所以在自己的项目中本次只是简单的验证了一下可行性。关于AndroidxAndroidx其实就是将Android Support Library中的代码改包名移到了androidx,为了解决support-v4、v7包依赖的混乱问题。 关于什么是Androidx可以看下郭神的这篇博客 谷歌官方文档提供了support包与Androidx库的对应关系等,这是传送门...

2020-12-09 16:54:12 419

原创 2020发展规划Q3

2020-09-24 17:51:53 144

原创 Apache Http componts 实现server的CORS

一.问题:如题,我这里已经有一个用Http componts套件实现的简易的Server,现在需要实现服务的CORS支持。二.理解原理:首先,我们需要了解CORS是怎样的一套机制(这部分介绍来自阮一峰大神的文章,写的很清楚):CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。简介:CORS需要浏览器和服务器同时支.

2020-09-11 15:26:07 239

原创 解决Android中Webview软键盘与沉浸式的冲突的几种方式的分析

问题问题主要出现在使用Webview同时使用沉浸式的时候,软键盘会遮挡webview输入的显示,并且此时webview并不能滑动。这个问题的出自Android本身的一个bug,bug号5497,从编号就能看出这个bug已经很久远了,久远到官方都不出面解决,因为民间已经有了许多方法来绕过,或者部分情况下解决这个问题。解决的方法有三种:不要使用沉浸式布局AndroidBug5497Workaround自定义LinearLayout,relativityLayout第一种(不要使用沉浸式布局)故

2020-08-31 16:58:28 963

原创 20181217今天遇到一个很奇怪的问题

关于webview的。在html中是这样写的。&lt;form method="POST" target="_blank" action="url"&gt;然后在submit的时候,页面就会无响应。 经过多次尝试,结果很奇怪。如果我在webChromeClient中复写了OnCreateWindow方法。并且在webview的setting中设置了webSettings....

2018-12-17 21:40:09 755

原创 以数据驱动页面为展现系统设计的思考

以数据驱动页面为展现的思考:对于客户端开发来说,版本发出去之后,再要修改代码,是一件成本比较高的事情,针对线上实时调整比较多的地方,往往就采用了H5的方式上线。由于H5的体验相对Native欠缺一些,就有了后来Facebook的ReactNative(RN),以及阿里的解决方案Weex,以Native的方式实现页面动态调整的能力。在种种现有框架不成熟的时候,对于首页这种重量级的页面,我们还是希

2017-10-11 15:19:02 849

原创 retrofit 上传文件, 新方式 传的是数组 或者文件

retrofit 上传文件, 新方式 传的是数组 或者文件接口 新的写法@POST(Urls.fauth) public Call fAuth(@Body MultipartBody multipartBody); 构造MultipartBody public void fLoginPost(final Context context, String grantType, String use

2017-04-05 14:52:24 5535

原创 Android怎样使应用安装后不在launcher上显示图标

参考了网上很多方法,最后找到了这样一种方法,既可以隐藏launcher中App的图标,又可以通过隐式启动的方式启动起该App中的指定Activity,好了直接进入主题。子app的工程名叫app:AndroidManifest.xml中定义如下:<application android:allowBackup="true" android:icon

2016-10-10 20:43:28 4788 3

原创 日积月累

-Android广播机制(两种注册方法)与 中断广播(http://www.cnblogs.com/error404/archive/2011/08/03/2126034.html)

2015-11-13 10:58:49 625

原创 JAVA并发总结-基础篇

文章的起源来自于并发编程网上一篇关于并发的面试题的帖子,自己回答了一份。

2015-05-31 22:40:56 1921

原创 并行笔记

阻塞队列:支持操作add:增加一个元素:满,抛异常remove:移除并返回队列头部的元素:空,抛异常element:返回队列头部元素:空,抛异常offer:添加一个元素并返回true:满,返回falsepoll:移除并返回头部元素:空,返回nullpeek:返回队列头部的元素:空,返回nullput:添加一个元素:满,阻塞take:移除并返回队列头部的元素:空,阻塞四种实现Lin

2015-05-30 23:17:37 576

原创 关于进行条件筛选的SQL关键字的一点理解

概述一般能够用于条件筛选的有三种:ON:联结(join)筛选WHERE: 一般条件筛选HAVING: 分组后的条件筛选ONJOIN – ON 语句的执行顺序: 例句: SELECT * FROM A LEFT JOIN B ON A.ID = B.ID AND A<>0 WHERE A.name = ‘x’ 注意在作on 连接后 的and 子句 和where 子句 。 他们

2015-05-17 23:47:03 7930

原创 spring配置tomcat的jndi数据源

刚在tomcat中配了一遍jndi的数据源,通过spring引用,中间出了一个问题,一直报 : “cannot create jdbc driver of class ” for connect url ‘null’”配置步骤就不在这里写了,主要参考tomcat和spring的官方手册。来说说我遇到的这个问题吧,主要是由于我是在”WebApp/META-INF/context.xml”中定义的

2015-05-14 12:34:04 949

转载 Java 理论与实践: 修复 Java 内存模型,第 1 部分

什么是 Java 内存模型,最初它是怎样被破坏的?[Brian Goetz]([email protected]),首席顾问,Quiotix 公司 简介: 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议。原始 JMM 中有几个严重缺陷,这导致了一些难度高得惊人的概念语义,这些概念原来被认为很简单,如 volat

2015-05-12 20:36:32 480

转载 Git 命令速查手册

引用 :http://blog.csdn.net/ithomer/article/details/7529841前面两篇博客 Git 版本管理工具 和 Git 常用命令详解,分别介绍了Git 基础知识和命令用法本文将对Git 命令,做一下全面而系统的简短总结,整理成简洁、明了的图表结构,方便查询一、 Git 常用命令速查g

2015-05-06 02:08:52 1021

原创 微次元学习笔记-Build篇

微次元是一个很好的开源的第三方微博,值得借鉴学习 点击进入他的github查看我的环境设置: Android Studios 1.1.0 Gradle:2.2.1 SDK:22.0.0基本修改 从github上拉下来代码,根据README的提示,做以下修改: Gradle 构建 - 版本 最新 Android SDK Gradle - 环境

2015-04-25 02:04:27 1554

原创 由Android缓存设计想到的

由Android缓存设计想到的前言到底是应该使用虚拟机底层通过GC回收保障的SoftReference,还是使用一个带LRU算法的队列,哪个更适合Android系统下的应用?计划分三个部分: + SoftReference + LRU Queue + Google官方的做法

2015-04-20 17:59:44 833

原创 Android手势操作

Android手势操作 一盏灯, 一片昏黄; 一简书, 一杯淡茶。 守着那一份淡定, 品读属于自己的寂寞。 保持淡定, 才能欣赏到最美丽的风景! 保持淡定, 人生从此不再寂寞。前言利用手势操作在现在的APP中越来越普及,大多数时候使用Fling,Scroll等Gesture能大幅度提高用户的操作体验,特别是大屏手机返回键程越来越大的现状下。 在Android系统下,手势识别是通过Gestur

2015-04-20 00:48:50 2598

原创 图解ThreadLocal

ThreadLocalThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。  当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。  从线程的角度看,目标变量就象是线程的本地变量,这也

2015-04-04 23:13:14 982

原创 图解Android事件分发

简单布局的情况下:

2015-03-25 21:09:49 1602

原创 关于泛型的一点理解

这里主要针对一些容易混淆的点:泛型方法:为了在静态(static)方法中使用泛型类的类型参数(“T”),于是有了泛型方法,注意泛型方法的格式,类型参数需要放在函数返回值之前。static  void fromArrayToCollection(T[] a, Collectionc){边界通配符:通配符解决使用(注意,这里是使用)现有泛型容器(类)时无法事先确定类

2015-03-12 18:46:59 747

原创 Java关于Synchronized关键字在不同位置使用的理解

Java中的Syncronized关键字可以用来修饰同步方法:像这样synchronized void f() {/*body*/}和同步语句块:像这样synchronized(object){/*body*/}。其中修饰同步方法可以分为修饰static方法和实例方法。其中修饰同步语句块还可以分为修饰instance变量,Object Reference对象引用,class 字面常量。

2015-03-10 15:58:09 4119

原创 android使用post(Runnable)更新UI的误区

之前在公司的项目里经常见到这样的代码写法:Handler mHandler=new Handler(); mHandler.post(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub } });其实我

2015-03-08 21:11:58 4172

原创 GreenDao源码学习

网上GreenDao相关的资料不是特别多,除了官方文档几乎没有特别好的资料。自己整理了一份,以备不时之需。

2015-02-27 13:44:53 2657

转载 Android中Acition和Category常量表

ActionAction常量对应字符串简单说明ACTION_MAINandroid.intent.action.MAIN应用程序入口ACTION_VIEWandroid.intent.action.VIEW显示指定数据ACTION_ATTACH_DATAandroid.intent.action.ATTACH_DATA

2015-02-26 11:07:20 498

原创 WeakHashMap的一点理解

本文的大部分参考自下面这篇blog:http://hongjiang.info/java-referencequeue/先上图:WeakHashMap的实现是通过ReferenceQueue这个“监听器”来优雅的实现自动删除那些引用不可达的key的。先看看ReferenceQueue在Java中的描述:Reference queues, to which reg

2015-02-24 19:09:40 804

原创 ActionBarSherlock: changing homeAsUpIndicator doesn't work

文章摘自stackoverflow上的一个帖子,解决了actionBar上换home图标左侧的“原文如下:Ask:I'm want to change the up icon with applying the following style to my activity, but it doesn't work and but I still get the default

2015-02-21 21:15:50 627

原创 一张图了解Activity生命周期

2015-02-08 17:06:47 492

原创 android ListView 单条刷新方法实践及原理解析

对于使用listView配合adapter进行刷新的方法大家都不陌生,先刷新adapter里的数据,然后调用notifydatasetchange通知listView刷新界面。方法虽然简单,但这里面涉及到一个效率的问题,调用notifydatasetchange其实会导致adpter的getView方法被多次调用(画面上能显示多少就会被调用多少次),如果是很明确的知道只更新了list中的某一个

2015-01-27 18:25:47 7415 6

原创 关于HandlerLeak的一点理解

之前很多代码是这样写的: @SuppressLint("HandlerLeak") Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case HyyConstants.REFRESH_LIST: Toast.makeText(

2015-01-17 18:35:23 8640

翻译 GreenDao简明教程(关系,Relation)

8.实体之间的关系数据库表有可能是1对1,1对多或多对多的关系.如果你对数据库关系不了解,在我们讨论ORM特性之前,最好先补充相关的知识.greenDao中,实体关系用1对1或1对多来表示.例如,如果你要在greenDao上构建一个1对多的关系,你必须要先有两个实体类,他们彼此间还没有联系,你需要更新他们两个实体.8.1构造1对1关系在greenDao的代码生成工程中,

2015-01-15 22:51:34 4478 1

翻译 GreenDao简明教程(查询,Querying)

6.查询查询接口返回符合指定条件的实体对象集合.你可以使用SQL组织你的查询语句,或者采用更好的方法,使用greenDao的QueryBuilder API.greenDao的查询也支持延迟加载结果,当结果集很大的时候,它会节省内存和提高性能.6.1QueryBuilderQueryBuilder类让你不需要写SQL来构建查询条件.写SQL大多数人都不喜欢,并且容易出错,因

2015-01-15 22:46:01 50743 3

空空如也

空空如也

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

TA关注的人

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