自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (3)
  • 收藏
  • 关注

原创 关于互联网产品发版管理的思考

互联网产品如何保证版本又快又好的迭代

2023-01-14 14:38:53 266

原创 单点登录朴素原理

你是否看到后台大神的单点登录示意图头皮发麻;你是否看完了单点登录的整个流程后,隔一段时间就浑然不知;你是否为单点登录的跳来跳去的验证感到苦恼;你是否对单点登录相关的技术术感到语云里雾里。本文将从单点登录的基本的问题出发,展开讨论单点登录的朴素知识。

2022-11-03 21:26:16 467

原创 Android view绘制流程机制

摘要: 本文从Android view的根本需求为起点,站在设计者的角度,讲述了Android 系统view部分如何完成整个视图的绘制,结合view、viewgroup的组织结构,阐述整个流程机制,以期掌握Androidview部分的核心设计理念。一、基本诉求 学习一个事物,首先要找到它的首要问题,view顾名思义,视图的意思,如何显示视图是它的首要问题,从需求来看,view要满足任意的显示需求,各式各样的界面需求都要满足,如何设计一套方案来满足复杂的需求,变的十分重要,该问...

2021-09-27 18:33:30 262

原创 Proguard-Android“混淆”原理规则综述

一、概述Proguard,网上大多数资料都译为混淆,其实是不准确的,根据官方的介绍:ProGuard is an open-sourced Java class file shrinker, optimizer, obfuscator, and preverifier。混淆只占1/4,还包括其他功能,具体如下:shrink(删减):删减无用代码,包括类、变量、方法和属性optimize(优化):优化方法字节码,并移除无用的构造方法obfuscate(混淆):混淆现有代码,将有意义的命名替换为

2021-08-19 17:53:20 1105

原创 App启动加载优化

1. 背景App的启动速度极大影响到用户体验,启动又分为冷启动、热启动和温启动三种,冷启动是从零创建进程并完成初始化的过程,是三种启动方式里面挑战最大的,而且优化了冷启动速度,也能间接优化其他启动方式,业界一般说的启动速度优化指的就是冷启动速度优化,因此本文亦专指针对app冷启动速度的优化。2.问题分析首先需要定义问题,相信大家都有这样的体验,如果给你一个工程代码,然后问你该如何...

2019-12-05 16:49:12 785

原创 如何避免技术踩坑

一、导读相信很多技术同学都会花费几个小时、一天甚至几天的时间去攻克一个异常情况后愤而发出“好坑啊”的无奈和抱怨,下面我就给大家讲讲这个问题以及我们该如何避免,二、技术学习学习就是将自己不会的、或者不了解的变成会的、明白其机制的过程。在it行业,这种能力显得尤为重要,光语言就有上百种,按语言特点有面向对象的和面向过程的;按应用场景又分为前端、后台、客户端、脚本工具等。...

2019-10-13 23:37:39 633

原创 华为p10黑屏问题解决

一、一开始拿到这个问题,我想到了两个方向:1、界面启动的耗时操作 特意打印了方法执行时间,还好呀,这个思路被pass2、界面的window背景色,这个是系统设置的,可能为黑色 于是试用了不少背景设置属性:android:windowBackground、windowIsTranslucentwindowFullscreen、windowContentO...

2019-08-11 23:20:37 4077

原创 “中台战略”在Android客户端的落地实践

一、导读 在编程界,一般会根据工作内容,把开发人员分成前端、客户端、后台这三类。现在“中台”这提法很响亮,直观感觉是,难道这是一项新的工作内容,后续分类变成前端、客户端、中台、后台么?其实不然,中台不是一种具体的工作内容,而是一种思想二、背景介绍 说到中台,不得不提Supercell这个公司,这是一家位于芬兰赫尔辛基的移动游戏公司,号称世界上最成功的移动游戏公...

2019-08-04 15:26:05 1677

原创 FileProvider(Failed to find configured root that contains)

一问题背景 最近项目app发布新版本,通过bugly后台发现,在调用系统相册的功能处会出现崩溃“failed to find configured root that contains xxx”,赶紧找来手机测测,发现没问题呀,又多找了几部手机试试,发现也是ok的呀,然后对比报错的系统版本是Android7.0–9.0,而且不是一部机型有问题,应该跟机型没关系,相应的又找了7.0–9.0的...

2019-05-27 17:23:28 601

原创 Android推送方案综述

问题简述:简单模型如下图所示,要想完成推送需要满足两个条件:首先,需要保证服务端和客户端都处于活跃状态;其次,服务端需要和手机客户端保持连接畅通。 关于后者连接畅通问题不大,主要是长连接、客户端轮询请求、SMS短信推送等方案,所以难点是前者:使接受推送的客户端长期处于Running状态。由于在我国无法使用谷歌自建的推送通道,不同app各自为政,自建推送通道,会消耗大量资源,给用户...

2019-05-13 11:04:52 374

原创 收藏链接

https://coolshell.cn/articles/9308.htmlhttp://weishu.me/

2019-04-23 10:15:10 270

原创 缓存

一、问题背景:为什么要加缓存?缓存就是要解决时间上执行慢的问题,而且前提是时间上已经没有多少优化空间,根据性能优化以空间换时间的原理,自然的就需要在空间上做优化二、基础原理根据计算机存储层次结构原理图,一个层次上的存储器是作为下一层次存储器的高速缓存。如下图所示:从下往上,价格越来越贵,速度越来越快,容量越来越小。一个典型系统上的磁盘驱动器可能比主存大100倍,...

2019-04-17 09:48:59 126

原创 Android thread

本片文章将介绍android的线程相关知识,主要分为三个部分:背景知识、线程基础、线程种类以及各自的适用场景。一、背景知识 说到线程,我们首先知道需要讲进程,因为线程属于进程内部的东西,在android中,进程是怎样的设计?进程和应用又有什么样的关系呢?如上图所示:从上往下是三个大的层次:应用层、ART层(android run time)、Linux 层。每创建一

2017-09-05 11:24:36 1176

原创 android 跳转到其他应用的特殊方法

常用方式就不详说了,无非是显式和隐式跳转。现在要说的是非常特殊的一种,经过查看intent的内部源码发现:intent有成员ComponentName,此类接受包名和类名两个字段作为参数。平时使用的显式调用即是这种方式的一种特殊调用       显式调用:       Intent intent = new Intent(this, TestActivity.class);     

2017-05-11 14:08:59 717

原创 分批从ContentResolver获取数据

public ArrayList getVerifyData(Context context, int size, int currOffet) { ArrayList list = null; Cursor cursor = null; try { ContentResolver cr = context.getContentResolver();

2016-11-11 16:53:31 810

原创 android 4.4 appcompat gradle 构建jar包兼容性问题

由于项目需要,需要将功能做成一个jar包供集成方使用。开发环境使用的是android studio,所以需要研究gradle怎么输出jar包,经过研究发现,gradle并没有现成的api或者插件供使用。目前网上较多的就是各种将classes文件和依赖的jar包打成jar包的案例,按理说,也能解决问题。但问题就出在appcompat这样的依赖上,由于项目使用到了这种依赖,构建调试也很简单,直接写个d

2016-10-13 08:42:45 718

转载 有哪些令人惊叹的心理和思维技巧?

【导读】: 在日常中沟通交流中,开门见山向对方说明来意,并不见得奏效。国外网友在 Quora 上讨论分享不少心理和思维技巧灵活。伯乐在线在本文摘编了 3 个技巧。如果能活用这些技巧,会大大提高沟通的成功几率。Andrius Saulis 的分享,8200+ 顶这里有个让别人同意你观点的技巧。这个方法是有科学依据的:它被称为「梯式同意」(Yes-Ladder)—— 只要你知道

2016-10-08 17:29:34 337

原创 Android 动画原理简析

说一说动画的原理,这里主要说的是视图动画,也就是涉及到界面变化的动画。我们一一拆解动画的原理,先来个定义,动画:随时间界面上出现的连续变换,问题拆解:视图绘制,推动不断的变化。推动不断的变化又可以分解为:视图某些界面属性值随时间的变化和循环的推动。简单理解就是三个部分。视图绘制随时间变化值,也就是个一元一次函数图像,自变量是时间推动变换,也就是looper,得有个循环也就是vi

2016-09-29 17:30:34 492

原创 Android 架构随想之配置文件

开发过程中不禁对于android的架构设计会有一点点想法,但是总是纳闷匆匆一想,思考的广度深度都十分有限,所以,纪录一下,看能不能梳理出人家的思路,一家之言,难免才疏学浅,望大家指正。       先聊聊他的配置文件,主要是视图相关的配置,在res目录下。       1、解耦:视图作为配置文件独立处理,和代码完全解耦,可以独立应对复杂的界面布局。       2、解析:xml书写的布

2016-09-29 11:11:36 324

原创 ActionBar设定自定义高度

项目上接到一个需求,需要设定ActionBar的高度为指定值,查阅了一番资料发现:没有直接设置高度的api,但是可以通过themeStyle来指定name="FixedActionbarTheme" parent="Theme.AppCompat.Light.DarkActionBar"> name="android:actionBarSize">100dip但是andr

2016-09-29 10:13:40 4263

eclipse制作可运行jar包

如何使用eclipse制作可运行的jar包

2016-01-06

when Runtime.exec() won't 中文翻译版

将runtime.exec()的四个陷阱用中文描述

2013-02-04

王森 深度历险

对android开发环境进行描述,有助于了解运行环境

2012-03-22

空空如也

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

TA关注的人

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