Android 应用
大_熊_
关注移动互联网 && Android应用开发
展开
-
Android三种常用动画分享
在Android3.0(即API Level11)以前,Android仅支持2种动画:分别是Frame Animation(逐帧动画)和Tween Animation(补间动画),在3.0之后Android支持了一种新的动画系统,称为:Property Animation(属性动画)。 一、Frame Animation:(逐帧动画)这个很好理解,一帧帧的播放图片,利用人眼视觉残留原理原创 2015-04-21 23:19:28 · 3891 阅读 · 0 评论 -
开源了一款Android的IPC库AndLinker,结合了AIDL和Retrofit的特性,支持RxJava
前言工作中经常会遇到进程间通信的需求,但每次通过AIDL实现又觉得步骤十分的繁琐。因此用业余时间自己设计并开源了这款IPC库。设计思路来源于Retrofit通过动态代理生成实现类的这种方式,把AIDL与Retrofit的特性完美的结合起来。这是你们没有体验过的全新方式,只需体验三分钟,你就会像我一样,爱上这款开源库~项目地址:https://github.com/codezjx/And...原创 2018-03-16 22:28:47 · 1802 阅读 · 0 评论 -
关于ANR异常捕获与分析,你所需要知道的一切
背景最近项目组需要实现捕获ANR并上传到公司服务器相关的功能,因此花了点时间来整理相关的知识,并从AMS源码与腾讯Bugly-SDK中逆向找到相关思路,在此分享给大家。原创 2017-11-27 19:48:05 · 15245 阅读 · 4 评论 -
友盟统计UMID潜在的一个坑
最近发现友盟的数据统计里面,活跃用户的数量有点不大对劲,跟启动次数相比,严重偏少。sdk的使用方式没啥好说的,就那么简单几步,应该不会是sdk设置的问题。于是就从友盟关于活跃用户的定义开始,着手分析这个问题。关于活跃用户的定义,可以参考官方这篇文章:[你真的了解活跃用户吗?][1],总结起来其实就是很简单的一句: 活跃用户的定义:打开应用的用户即为活跃用户,不考虑用户的使用情况。从上面的文章,原创 2016-07-04 21:09:22 · 13112 阅读 · 5 评论 -
adb常见问题及解决方法
问题一:ADB server didn't ACK * failed to start daemon * 原因:adb的默认端口为5037,因为该端口被占用了,因此启动不了分析:查看到底是谁占用了5037这个端口?(1)命令行CMD执行:netstat -ano | findstr "5037":TCP 127.0.0.1:5037 Bill-PC:55940 TI原创 2015-04-21 22:59:17 · 3546 阅读 · 0 评论 -
onCreate中View的width,height为0的问题
当我们在onCreate()回调方法中去调用View的getWidth()、getHeight()、getTop()、getLeft()等方法的时候,是无法获取到正确值的,此时只会返回0。 为什么呢?因为View的显示必须经历Measure(测量)、Layout(布局)和Draw(绘制)过程。而在Measure与Layout过程完成之后,View的width、height、top、le原创 2015-04-28 20:08:57 · 3290 阅读 · 2 评论 -
startService与bindService混合使用对Service生命周期的影响
项目开发中有遇到startService与bindService混合使用的情况,发现其对Service生命周期有很大影响,故与各位分享一下。。。一、正常情况(应该大家都很熟了,简单介绍):(1)单独使用startService():onCreate()->onStartCommand()->Servicerunning->onDestroy()->Serviceshutdo原创 2015-04-27 20:08:24 · 9064 阅读 · 3 评论 -
为什么调用FragmentPagerAdapter.notifyDataSetChanged()并不能更新其Fragment?
转载自:http://www.cnblogs.com/dancefire/archive/2013/01/02/why-notifyDataSetChanged-does-not-work.html 在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集转载 2015-04-21 21:55:28 · 1126 阅读 · 0 评论 -
关于ListView中notifyDataSetChanged()刷新数据不更新原因
使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据.这时候就要注意了: ...... private ArrayList> usersList; ...原创 2013-04-26 14:19:30 · 9441 阅读 · 1 评论 -
Android x86模拟器Intel Atom x86 System Image配置与使用方法
Android x86模拟器Intel Atom x86 System Image配置与使用方法 前言: 大家现在开发使用的Android 模拟器模拟的是 ARM 的体系结构(arm-eabi),因此模拟器并不是运行在x86上而是模拟的ARM,所以我们调试程序的时候经常感觉到非常慢,大部分开发者应该都深有体会。 针对这种情况,前段时间Intel原创 2013-04-26 14:48:26 · 7759 阅读 · 1 评论 -
Intent.putExtra()传递Object对象或者ArrayList<Object>
Intent传递基本类型相信大家都十分熟悉,如何传递Object对象或者ArrayList对象呢?可以通过:(1)public Intent putExtra (String name, Serializable value)(2)public Intent putExtra (String name, Parcelable value) public Intent p原创 2013-05-02 17:44:02 · 28441 阅读 · 1 评论 -
针对ADT升级到17以上出现NoClassDefFoundError问题的解决办法
如题, ADT升级到17以后的版本, 原来的手动添加进去的jar库文件已经无效。虽然编译时没有显示错误, 但是运行程序时会弹出 NoClassDefFoundError 的错误。解决方法: 1.首先清空手动添加的jar库文件,项目右键->properties->Java Build Path->Libraries,选择jar包,然后remove;2.把库文件原创 2013-04-26 14:56:00 · 1350 阅读 · 0 评论 -
在Service中新开线程和直接新开线程的区别与意义
为了了解这两者的区别,我们首先来了解一下Android的进程与生命周期一、Android的进程与生命周期:Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首先被消灭,然后是较低的,依此类原创 2013-04-26 15:33:17 · 2788 阅读 · 0 评论 -
从ContentProvider报SecurityException分析出Android5.0+的一个隐藏大坑
前言最近在开发A应用的时候对接了合作方的一个B应用,对方很快就把接口文档发了过来,约定好我们之间通过B应用提供的XXXContentProvider来获取相关的数据。一切看起来是如此的普通与简单,但是从刚开始调试的那一刻起,诡异的事情就发送了。九十岁老太为何起死回生?数百头母猪为何半夜惨叫?女生宿舍为何频频失窃?超市方便面为何惨招毒手?在这一切的背后,是人性的扭曲,还是道德的沦丧?事件的最后,...原创 2018-04-03 22:28:33 · 1586 阅读 · 1 评论