- 博客(86)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 对于Activity生命周期,你想知道的,全在这里
本来没打算写这篇文章,毕竟网上讲解Activity生命周期的文章一搜一大把,没有什么可说的。但是因为最近开发的时候遇到一个因为生命周期的一个疏忽导致Service始终报android.os.DeadObjectException 错误,调试了半天才解决,总结下来还是生命周期不熟,这里在总结一下。 对于生命周期,一些很经典的图就足以说明了,比如下面这个 再比如这个 具体的Activity生命周期
2016-07-14 20:40:30
460
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android调用系统相机的那些坑
Android实现拍照获取图片,有两种方案,第一就是调用系统相机拍照,然后获取拍照后的图片,实现比较简单,同时功能也比较简单;第二就是自定义相机,实现复杂,但是功能强大。这里讨论的是第一种实现方案。 虽然第一种方案比较简单,但是如果第一次用也会有一些磕磕绊绊,这里把我遇到的问题记录总结一些:1、调用系统相机拍照后,系统报错DeadObjectException; 解决办法:在An
2016-07-07 15:31:54
5507
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 堆排序讲解及Java实现
堆排序一、首先先解释一下什么是堆?堆可以看做是一颗树,而且是一颗完全二叉树。不同的二叉树请看下图: 二、堆排序的特性 首先介绍复杂度: 时间复杂度:O(nlgn)… 空间复杂度:O(1) 鉴于堆这种数据结构本身的特性可以发现(以最大堆为例),根节点为数组中最大元素,左右子节点小于等于根节点。 另外,假设某个元素为序号为i(Java数组从0开始,i为0到n-1), 如果它有左子树,那么左子
2016-05-03 16:22:40
908
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android获取手机本地图片缩略图
首先,提取图片和视频的缩略图可以直接访问Android系统数据库:1 android.provider.MediaStore.Images.Thumbnails2 android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图可以根据下面方法获取 public long getDbId(String path, b
2016-03-22 22:09:11
3027
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 [置顶] Android selector设置详解
Android 中的selector常用来设置背景,可以很方便的根据checked,selected等不同状态设置不同背景,不需要自己在Java代码设置了,简单,优雅!相信selector设置背景色大家都很熟悉了,这里介绍两个最近总结的一些技巧。背景色和文字颜色的设置 类似微信的底部导航,点击不同的底部按钮,会显示选中的图片,同时文字也会变色,背景图片用selector
2015-12-23 10:22:54
986
原创 Android SeekBar使用避坑指南
SeekBar是Android原生UI组件,可以用来调节进度,广泛应用于音乐、视频进度展示调控、音量、亮度调节等功能里。SeekBar的使用很简单,这里就不再介绍了,本文着重介绍一下作者最近在使用SeekBar遇到的几个坑,希望大家以后可以避免。
2023-09-22 19:56:31
757
原创 RxJava interval操作符的线程切换
当我们想要轮询和服务端通信的时候,上面是一个典型的请求方法,通过interval操作符来实现轮询,然后subscribeOn里切换到io线程,看起来没有问题,功能也能运行,然后这里面还是有一个隐患存在的。如图所示,我在map操作符里打印了当前的所在线程:发现结果并不符合我们的预期,这根本不是io型的线程,而是 Schedulers.computation() 对应的线程;而RxJava里的computation是固定线程数(CPU个数)的线程池,当我们的APP里有其他异步操作使用computati.
2021-08-11 15:05:44
374
原创 推荐一个极简通用的RecyclerView Adapter库——NoAdapter
NoAdapter你是否还在为项目中众多的列表样式而发愁?你是否还在为一遍遍机械重复的编写Adapter代码而厌倦?你是否还在为编写多类型卡片列表的众多细节而一次次的百度?是时候找一个更高效的手段来解脱自己了。NoAdapter——一个为解决Android列表开发的组件库。正如这个库的名称一样,NoAdapter致力于打造一个极简的RecycleView的Adapter组件,可以让开发者更专注于业务本身的卡片(item)开发,忽略复杂、繁琐、重复(尤其是一个列表有多种卡片类型的情况)的Adapter代码
2021-05-25 14:14:42
1365
10
原创 Activity onDestroy延迟回调
前端时间工作的时候遇到了两个奇怪的问题:使用百度步行导航的时候,开启导航后立即退出,再次进入的时候就会黑屏;使用度小满支付的时候,当支付成功后页面一直显示loading,过了10s左右才恢复正常。这看似两个不相干的问题,其实问题核心原因都是同一个,那就是上一个Activity在关闭的时候,onDestory没有及时的调用,过了10s左右才回调。onDestory为什么会延迟10s呢?要了解中国问题,首先要知道 onDestroy是什么时候被系统回调的。经过查阅各种资料之后了解到:在下一个要
2021-04-01 11:22:05
1145
原创 Android(Java)下载断点续传的实现
Android(Java)下载断点续传的实现,通过使用http range 和 不使用两种方法来实现,并说明了每种方法的优缺点,且着重说明了其中的要注意的地方
2020-04-24 19:34:04
2263
原创 跳表(SkipList)的Java实现
跳表(SkipList)的Java实现什么是跳表简单说跳表(SkipList)是一种可以替代平衡树的数据结构。跳跃表让已排序的数据分布在多层次的链表结构中,默认是将Key值升序排列的,以 0-1 的随机值决定一个数据是否能够攀升到高层次的链表中。它通过容许一定的数据冗余,达到 “以空间换时间” 的目的。跳跃表的效率和AVL相媲美,查找/添加/插入/删除操作都能够在O(LogN)的复杂度内完成...
2018-09-18 11:44:40
914
4
原创 RelativeLayout的坑
背景: 因为某个功能,修改了listview的header的根布局,由原来的FrameLayout改为了RelativeLayout,目的是这样能更方便的去处理header里的各个元素之间位置。Bug出现场景: 在Android4.2及以下的手机上加载列表的时候必崩,错误日志如下: 刚开始没有关注BtsViewUtil的155行,因为这个是一个用了很久的工具类,主要就是对view进行mea
2017-07-19 20:17:29
984
原创 Mac下给Iterm2添加配色
As you know,在Mac下最开发,其中一个好处就是可以通过命令行进行很多操作,比如安装各种软件、开发环境,但是系统自带的命令行工具不太好用,使用Iterm2代替系统命令行工具是一个不错的选择。 Iterm2安装完之后,默认是比较单调的黑背景,白字体,看着很不舒服,那就让我们给它换一个配色方案吧! 网上有很多方案,大致都差不多,但是有很多按照它都方法做了之后仍然无效的,所以这里记录一下亲
2017-05-10 13:13:03
1301
原创 一次繁杂问题的解决过程
起因:刚入职新公司,接了一个小任务,说来简单,就是把项目里现在所有的埋点任务过滤一遍,以新发给我的一个Excel表格数据为准,没有在表格里出现的埋点key就删除掉。当我接到这个任务的时候,内心其实是有一点抗拒的,毕竟是毫无技术含量低工作,而且项目中那么多文件我总不能一个个文件一行行代码找吧?!幸好我被告知项目中所有埋点功能都是通过一个Log类中的add方法来实现的,那样我只要查找项目中调用了这两个方
2017-05-02 16:51:40
550
原创 TextView设置超链接的那些坑
给TextView设置超链接其实很简单,但是要实现不同的效果,可能就要采取不同的方法,这其中也许也还有一些小坑,鄙人刚刚趟了一遍,记录下来,供大家借鉴。1. html设置超链接这是最简单的一种方法了,在自己的string.xml里如下定义<string name="baidu"><a href='www.baidu.com'>百度</a></string>然后你的textview设置上这个字符串就可
2017-04-12 18:30:41
945
原创 MySql备份的两种方式
一、通过SQL直接备份恢复通过SQLyog工具可以很方便的导出数据库结构内容sql文件,然后再通过SQLyog恢复即可,简单、可靠,但是如果数据量大比较耗时。下面介绍一种更简单且快捷的方式。二、 通过备份data文件进行备份恢复打开MySQL的安装目录,进入data文件夹,可以看到里面有很多你创建的数据库文件夹,把你想要备份的数据库文件夹拷贝出来进行备份;当你安装了新的数据库或者把原来数据库删除了
2017-03-24 11:36:12
888
原创 最简单的自定义Toolbar SearchView样式方法
Android toolbar的灵活性很高,因为它本身就是一个ViewGroup,所以可以通过添加自定义view的形式自行设置标题的样式,这样既不就能满足大部分需求了。 本次主要说一下使用SearchView的时候,如何自定义它的样式。网上大部分都是通过获取SearchView里的控件如EditText来修改它的样式,主要代码如下: SearchView searchView = (Se
2017-02-27 18:11:44
5468
2
原创 记录在使用react-native-echarts中遇到的问题
react-native-echarts是一个在react-native中非常好用的图表组件,感觉比guthub上排名第一的还好用。主要是因为它是基于百度的echarts做的,不知道echarts的自行百度,感觉echarts现在是图表中做的做好的组件了。 具体使用很简单,我就不说了。这里记录一下在使用中遇到的两个问题。Q1当数据量比较大的时候,x轴的数据不显示。这个是echarts自己的一个功能
2016-12-30 11:05:40
10832
4
原创 ReactNative开发之我遇到的那些坑(持续更新)
上篇文章里介绍了ReactNative环境的搭建,然后你以为就可以开开心心的进行开发了?too young! 最让人抓狂的部分才刚刚到来。。Q1、在启动js server的时候 react-native start ,老是报错 “operation not permitted, 1stat ‘’ 老实说,这个问题一直没有找到很好的解决办法,因为每次提示的文件都不是同一个。目前我采取的就
2016-12-20 15:08:06
5213
1
原创 React Native开发之windows开发环境最简配置
最近因项目需要,一个APP要用React Native开发。这里总结一下ReactNative在windows下的开发环境搭建。 当然这里先做一个重要总结!不要在windows下开发ReactNative!!! windows 下开发ReactNative确实非常麻烦,坑很多(至少目前情况是这样,当然随着RN越来越成熟,以后windows下应该也非常简单。) 如果你执意要在windows下开发
2016-12-20 14:37:01
524
转载 Error:Configuration with name 'default' not found. 解决办法
原文地址在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name ‘default’ not found.之前由于对gradle不熟悉,所以没有找到原因,其实也是偷懒,没有认真去排查问题,今天又遇到了,就折腾了会,把所有的配置文件都打开看,最终解决问题了,发现尽然是个低级的不能低级的问题,故记录下,警醒自己。打开set
2016-11-29 11:51:25
505
原创 使用Pattern、Matcher来实现搜索高亮显示
需求很简单,做一个搜索功能,要求搜索结果高亮显示。 1、最简单直接的方法,使用string的indexOf方法,来获取关键字的为准,然后做高亮处理。但是这样如果文本里多次出现关键字,就不太好弄了; 2、使用正则表达式判断: 使用正则表达式当然是一个好办法,但是很少人能直接写出正则表达式,那怎么办呢?别急Java里自带了封装好的类来帮助我们实现,它就是Pattern和Matcher! 具体用法
2016-09-19 18:15:00
1142
原创 关于ListView设置分割线的那点事
大家在刚接触Android的时候,ListView肯定是第一个接触到的、也是比较常用的一个比较“高级”一点的控件,说它高级,主要是它在使用的时候比TextView、ImageView等基础控件要复杂一点。 当我们兴致勃勃的学习了ListView和Adapter直接的关系绑定,并且把列表展示出来了之后,遇到一个说起来很简单的一个问题,列表怎么添加分割线?1、item view里添加分割线最直接最简单
2016-09-08 18:17:41
3901
转载 Android Studio中的productFlavors指定默认编译执行的任务
Android Studio中指定了 productFlavors如下: productFlavors { /*日常*/ Daily { } /*线上*/ Online { } /*预发*/ Advance { } }但是这个时
2016-08-17 11:38:11
8089
3
原创 Gradle使用技巧2——不同buildType使用不同applicationId
在工作中,有的时候会遇到比较奇葩的需求,就是线上环境和开发环境不能使用同一个applicationId,比如在使用推送的时候(小米推送),不同的KEY对应不同的applicationId,如果在注册的时候只使用同一个KEY,那么平时开发测试的时候很容易就导致消息发到了线上环境,这怎么办呢? 还能怎么办?在推送网站上申请两个账号呗,一个测试账号,一个正式账号。然后在初始化推送服务的时候可以根据 Bu
2016-08-09 16:42:37
4158
原创 Gradle使用技巧1——根据buildType自动打包
自定义参数,在代码中使用 在开发过程中,一般接口地址根据环境不同分为release、debug等不同地址,如果只是debug和release两种还好办,可以根据 BuildConfig.DEBUG 来区分使用哪个地址,但是如果又多了一个dev环境呢?再有dev2……怎么办? 这个时候就轮到Gradle的自定义参数上场了!用户可以自己选择是在buildType或者Flavors里自己设定,设定的语
2016-08-02 11:59:24
3763
转载 可能是讲解Android事件分发最好的文章
我几乎看过国内讲解Android事件分发的所有文章,但遗憾的是都没有这篇讲的好,原因有二:它阐明了具体的事件分发机制的设计意图,让人既知其然,又知其所以然;它没有贴源码,吓唬本宝宝。所以我决定将它翻译出来,造福广大Android开发者。原文请点击[这里](http://www.jianshu.com/p/2be492c1df96)有时,你必须要自己处理触摸事件(touch events)而不能依赖于
2016-07-22 14:45:47
318
原创 解决Android 5.0中出现的错误:Service Intent must be explicit
最近在开发SDK,用户在使用过程中遇到一个问题,在启动service的时候报如下错误:错误提示也比较明显,Service Intent必须是显示的。这里我启动service的时候确实是隐式的: bindService(new Intent(MidConstants.ACTION_SERV_TRANS), mTransServiceConnection, Context.BIND_AUTO_CRE
2016-07-22 11:35:01
562
原创 记一次使用Android studio修改代码不生效的问题
早晨到公司,匆匆打开Android studio,把昨晚构思了好久的代码敲上去,满怀期待的等待着“惊喜”出现。。结果惊喜果然出现了! 问题并没有解决,调试了半天发现原来新的代码并未生效,新打的log日志都没有,长舒一口气,原来并不是我的代码问题,是as的问题,好办!一顿clean,rebuild,卸载——卸载、clean、rebuild。。然而并没有什么卵用。。这到底是什么情况?!无意间发现了我的b
2016-07-05 15:49:23
20958
1
原创 解决被依赖module中BuildConfig.DEBUG的值总为false问题
在Android的实际开发中,一般会有这样的需求,debug和release版本不同,接口地址不同,同时控制日志是否打印等,系统为我们提供了一个很方便的类BuildConfig可以自动判断是否是debug模式。 有了BuildConfig.DEBUG之后,你在代码中可以直接写入 if (BuildConfig.DEBUG) { Log.d(TAG, "output somet
2016-06-24 17:28:37
9915
7
原创 记一次EditText设置默认选中setSelection的一个bug
需求:在重命名的时候,要默认选中文件的后缀之前的名字;代码如下:int index = name.lastIndexOf(".");if (index > 0) renameEditText.setSelection(0, index);但是发现有的文件重命名的时候app崩溃,报错如下: java.lang.IndexOutOfBoundsExcep
2016-03-02 14:52:34
6027
3
原创 startActivityForResult需要注意的问题
假设从Activity A启动Activity B1、如果B的launchMode不是 standard,那么B不会启动,且会立即执行A的onActivityResult方法; 控制台有如此经过提示: WARN/ActivityManager(67): Activity is launching as a new task, so cancelling activity re
2016-03-01 17:48:09
401
原创 [置顶] 字符串转换数字(不使用任何类库)
前两天遇到一个有趣的题,让把字符串转换成数字,前提是不能使用任何封装好的类库。本来以为挺简单,但是当实际做的时候,发现还是有困难的。主要是要解决char和int进行相加的问题!直接上代码吧!(代码里没有进行字母、最大长度等验证!有更好的方法欢迎指出)private static int stringToNumber(String ss) throws Exception {
2015-12-23 10:20:12
461
原创 [置顶] Java、Android、IOS通用的加密解密方法
package com.changyou.ims.mobile.util;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;/*** Base64编码工具类*/public class CustomBase64 { pri
2015-12-23 10:17:30
1652
原创 记一次获取当前用户名错误的bug
在Android应用中很多时候都会要获取当前登录用户名,一般的逻辑是这样的,在登录Activity中,登录成功的时候记录当前用户的用户名,通过sharePrefrence保存;在BaseActivity中获取当前用户名,也是通过sharePrefrence获取。这个本没什么问题,错就错在我在登录成功后Activity oncreate里把当前用户记录了下来,代码类似mCurrentUs
2015-12-23 10:12:09
506
原创 Android监测程序压入后台及从后台返回
在API14中,android提供了一个新的状态监听的接口 ComponentCallbacks2。在当中的onTrimMemory方法中,提供了一个状态参数 TRIM_MEMORY_UI_HIDDEN。应该算是一个“正式”的进入后台标志了,之所以打引号,是因为这个状态本意上并不是为了监听进入后台而设计的,它只是为了让开发人员能够在程序进入后台的时候去释放一些内存。但是,这个确实能够准确的监控。
2015-12-23 10:09:27
860
原创 JavaScript操作数字的时候一些注意事项
1、众所周知,在js是一种弱类型的语言,因此在进行数字比较的时候需要注意一下,比如:var num1 = 5;var num2 = $("#num").val();//获取dom中某一控件的值if(num1>num2) alert("true");else alert(false); 上面代码中,如果num2=12的话,会弹出true;因为此时进行比较的实际上
2015-12-23 10:06:45
371
原创 断点续传时in.skip
断点续传里用到的一个重要方法就是inputstream的skip方法,但是在使用的时候有一点需要注意,就是skip不能保证你的输入流准确的跳过count个字节。看看这个方法的介绍是怎么说的 Skips at most {@code byteCount} bytes in this stream. The number of actual* bytes skipped may be
2015-12-23 10:04:05
850
原创 记一次Android下载过程的内存优化
对于大多数程序猿(码农)来说,一提到内存优化肯定都是比较头大,我也不例外,但是因为我们这个项目就我一个人做,出问题了也没有大牛解决,所以只能是自己硬着头皮上了。 言归正传,先交代一下事情的原因。楼主是做网盘项目的,从从未接触过分块上传、断点续传(以前一听断点续传也是头大)到勉强把分块上传下载做完,也是经历了好多痛苦的,但是,有一个事情一直是我不愿承认不想面对但却偏偏存在的问题,那就
2015-12-23 10:01:23
539
原创 计算汉明权重
原题链接:#191 Number of 1 Bits要求:写一个函数,以一个无符号整数为参数,返回其汉明权重。例如,‘11’的二进制表示为'00000000000000000000000000001011', 故函数应当返回3。汉明权重:指一个字符串中非零字符的个数;对于二进制串,即其中‘1’的个数。代码如下: public static int hammingWeight
2015-12-23 09:58:42
1343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人