Android 开发
文章平均质量分 52
永远的红姐
不积跬步,不至千里!
展开
-
Android 动画
Animation rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);rotateAnimation.setDuration(500);原创 2016-01-27 17:26:48 · 268 阅读 · 0 评论 -
Android 消息推送
消息推送目的1.让服务器能及时发送消息,通知客户端2.推送消息,提升日活等实现方案一轮询客户端每隔一段时间向服务器发出请求,获取最新的消息特点:1.适用于当服务器的数据以固定的频率更新,如:股票行情。2.在某些应用场景下,效率就比较低(网络/电量消耗),如:推送最新消息3.技术简单,容易实现发送短信特点:效率高,最及时,同时,费用最贵应用场景:土豪公司,不差钱使用开源项目:1.An原创 2016-08-01 00:11:55 · 391 阅读 · 0 评论 -
Android 奇思妙想之 new Activity()
奇思妙想 接触Android 也有很久了,不知大家有没有想过Activity可以new吗?Android由java语言开发,Activity本质也是一个对象,new出来有什么问题呢?最近一直在想这个问题!看了一些解释后才算明白,Android程序与java程序不一样,随随便便打写一个类,在main()方法里面就能运行。Android是基于组件化设计的,组件的运行需要一套完整的Android的原创 2016-07-21 22:02:22 · 4760 阅读 · 0 评论 -
自定义View
自定义控件的分类自定义控件有两种:自定义View,自定义ViewGroupViewView或者View的一个子类,不能有子View,提供具体功能,比如:系统自带的View: Button,用来用户点击的View TextView,显示文本的View EditText,实现输入 ......自定义View: 继承自View,实现某种效果....ViewGro原创 2016-08-14 23:36:12 · 263 阅读 · 0 评论 -
Android 图片的三级缓存
需求最近在项目中做一个图片显示的功能,需求是:在界面显示头像,如果用户没有设置图像就显示我们自定义的图片.实现由于我们的项目有点老,没有用到一些最新的技术,所以全部自己实现.图片加载的策略: 三级缓存1.优先从内存缓存中取图片,显示2.缓存没有,加载本地的图片3.本地没有,去网络拉取图片,拉取成功,显示4.拉取失败,生成自定义图片,显示整个加载策略就是这样. 实现:原创 2016-10-01 10:20:10 · 323 阅读 · 0 评论 -
Android之ADB大全
常用的ADB命令获取序列号:adb get-serialno常用的3个:adb devicesadb kill-serveradb start-server 重启机器:adb reboot重启到bootloader,即刷机模式:adb reboot bootloader重启到recovery,即恢复模式: adb reboot recovery查看日志:adb logcat安装,卸载原创 2016-07-31 20:32:54 · 307 阅读 · 0 评论 -
onTouch onClick onLongClick
执行顺序废话不多说,看别人博客也只是别人说的,自己实践了才知道!public class MainActivity extends ActionBarActivity implements OnTouchListener, OnClickListener, OnLongClickListener { @Override protected void onCreate(Bundl原创 2016-12-19 23:31:28 · 435 阅读 · 0 评论 -
Android之LocalBroadcastManager源码解析
LocalBroadcastManager在项目中遇到LocalBroadcastManager,看英文大概知道是“管理本地广播”的,翻了一下api文档,发现他就是用来注册,发送本地广播的,用于应用内通信。Helper to register for and send broadcasts of Intents to local objects within your process. This i原创 2016-07-29 23:58:52 · 353 阅读 · 0 评论 -
Android应用安全之ADB攻击
ADB启动四大组件通过adb shell命令可以启动跳转activity,启动service,或者发送广播broadcast等!通过该方式(与隐式启动类似)启动对于有传值的组件,不传值或者不对应传值可能造成我们的应用崩溃,或者出现错误信息,有可能产生严重的后果!在我们的程序中需要避免!启动命令发送广播,action为xxxxam broadcast -a xxxx传递int,string值am原创 2017-02-08 19:48:30 · 1194 阅读 · 0 评论 -
Android电量优化
最近领导老是反映说我们的APP耗电要比以前厉害一些,排在耗电量的首位,上黑名单了,需要进行电量优化!经过一段时间的研究,自己做了一部分的总结!电量优化的工具battery-historienbattery-historien是google开源的电量检测分析的工具,由于很多APP开发者对电量这快关注不是那么多,star数并不是特别多!链接:https://github.com/google/batte原创 2017-04-23 20:40:11 · 8589 阅读 · 1 评论 -
Android 通过Fidder进行抓包
最近集成Glide的时候要看Glide的缓存是否生效,需要抓包APP是否发送了Http请求,可以通过设置网络代理,使用Fidder根据进行抓包分析,具体配置参照抓包配置原创 2017-10-15 14:38:41 · 326 阅读 · 0 评论 -
Android 进程保活措施
保活的重要性对于一些需要存活时间较长的应用来说,进程保活是非常重要的,比如IM类型的APP为了收发消息的实时性,就需要APP能够更多的存活,不容易被系统杀掉,或者在被杀掉之后也能够起来,这就需要我们开发者做一些保活措施!一些措施1.提高进程优先级对于普通APP而言,提高APP的优先级(比如添加通知栏。。。。等措施将进程变成前台进程)虽然降低了APP被杀的概率,但是一旦系统内存不足被回收,APP也起不原创 2017-10-16 23:32:38 · 345 阅读 · 0 评论 -
AsyncTask源码解析
AsyncTask的使用AsyncTask是一个轻量级的异步线程类,主要用于异步加载数据并同时更新UI的操作,非常方便,使用也非常简单:“` @Override protected void onPreExecute() { super.onPreExecute(); } @Override protect原创 2017-12-06 22:19:53 · 164 阅读 · 0 评论 -
微信的bug
记录一个微信的bug(请允许我说一段废话)Android是基于Linux的一个开放,开源的系统,使得成千上万的开发者投入其中,开源的一个弊端就是开发商对Android系统做了各种各样的定制,对我们开发者来说,有可能导致相同的代码在不同版本,不同厂商的手机表现形式不一样,需要对具体机型做适配!(正文开始)最近在做语音通话模块,需要在手机锁屏情况下收到通话信令,弹起通话界面,覆盖锁屏显示只需要添加几个属原创 2018-01-01 23:18:20 · 838 阅读 · 0 评论 -
JNI DETECTED ERROR IN APPLICATION: java_object == null
记录一个问题,在调用一个j ni方法的时候报了一个错误,错误日志如下:01-02 10:29:26.288 20617-20617/? A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: java_object == null01-02 10:29:26.288 20617-20617/? A/art:原创 2018-01-02 15:29:31 · 17825 阅读 · 0 评论 -
Glide使用及踩坑日记
Glide使用及踩坑日记背景项目中使用的是之前的ImageLoader,这个图片加载库很久没有维护了,决定使用Glide替换掉ImageLoader使用GlideGlide的优点1.Glide的API使用非常的方便,支持链式调用,支持各种形式源的图片2.默认使用RGB-565,内存使用更小,滑动更加平滑3. Glide支持和Glide的生命周期同步4.可以支持原创 2018-01-14 14:05:59 · 1216 阅读 · 0 评论 -
Android--Uri
这篇文章总结的很不错,参考下原创 2016-07-20 20:13:45 · 388 阅读 · 0 评论 -
Android系统分享
系统分享最近在做一个系统分享的功能,就是系统其他应用向本应用分享文字,图片视频等内容,下面是实现步骤:一,给跳转的页面添加相应的intent-filter在指定Activity添加相应的intent-filter后,该应用就会出现在系统分享的列表中。<intent-filter android:label="@string/share_message" > <action android:n原创 2016-07-19 23:04:03 · 1513 阅读 · 0 评论 -
百度地图定位,高德地图定位
Android之百度地图定位,高德地图定位问题 最近几天我们的客户给我们反应说,app中的百度地图定位有误差,不能准确的定位到实时位置,而用微信里面的定位就能准确的定位到具体门牌号,然后就说是我们的问题,需要处理(因为我们的app对定位精度要求比较高,必须准确到号牌)思路 [1].刚开始听到这个问题觉得不应该,百度地图不可能有问题,一种分析是SDK版本太老了,核对之后发现是较新的jar原创 2016-04-12 20:38:39 · 1700 阅读 · 0 评论 -
MVC与MVP
一直想一篇关于MVC/MVP设计的文章,因为平时比较忙,自己也没有对这两种设计有很深入的了解,所以一直拖了很久,最近闲了下来,才有时间去研究一下,废话不多说,下面就写一下自己对MVC/MVP的理解,如果问题,欢迎大家指出.MVCmvc设计是软件设计中最常用的设计架构,在开发中有非常广泛的应用,它本身并不难理解,但是最近看了一些博客,感觉对于mvc模式的理解还是有很大的争论,具体争论什么这里就不讲了,原创 2016-04-15 17:29:23 · 385 阅读 · 0 评论 -
Handler的底层原理实现
Handler相信大家对Handler再熟悉不过了,平常使用它的频率也比较高,我们知道它是用来线程间通信的,但是handler是怎么实现通信的,可能就需要我们做进一步的了解,在面试中也是经常会问到的问题,下面我就带着大家跟一跟Handler的源码。 在跟代码之前我们先对Handler原理做个大致打介绍: Handler:用来发送消息,处理消息 Message:消息实体对象,handler原创 2016-04-16 22:48:24 · 6530 阅读 · 0 评论 -
Fresco的使用
关于Fresco之前在公司实习的时候,我们的项目一直使用的是Fresco,用它来加载图片显示图片,而且可以显示圆角图片,非常方便,后来了解到Fresco时Facebook的一个开源项目,是关于图片的一套解决方案,在2015年非常的流行!好了,不多废话,我们进入Fresco的世界吧!Fresco的介绍根据官方的介绍,Fresco时一个强大的图片加载组件,专为Android加载图片,支持Android2原创 2016-04-23 15:36:00 · 2253 阅读 · 0 评论 -
Fresco源码之Drawees-MVC设计
Fresco的使用在使用Fresco的时候,我们直接在xml文件使用了SimpleDraweeView这个类,然后findViewById,调用SimpleDraweeView.setImageUri(),就可以直接加载图片。根据官方的介绍,以及一些评价很高的博客,我们可以少走一些弯路。Drawees设计 Drawees是原来加载图片的,包含了一些组件,设计架构和MVC模式很相似Drawees原创 2016-04-23 23:38:34 · 482 阅读 · 0 评论 -
Fresco源码之DraweeHierachy
DraweeHierachy源码查看看DraweeHierachy源码之前,我们先看一下DraweeHierachy的继承体系 DraweeHierachy (I) –| SettableDraweeHierarchy (I) ——| GenericDraweeHierarchyGenericDraweeHierarchy GenericDraweeHierarchy是一个顶级接口,只有获原创 2016-04-23 23:56:19 · 391 阅读 · 0 评论 -
Fresco源码之DraweeController
DraweeController源码查看首先看类的继承体系: DraweeController –| AbstractDraweeController —-| PipelineDraweeControllerDraweeController源码DraweeController是一个接口,主要获取设置hierarchy,处理ontach,onTouch等事件 AbstractDraweeCon原创 2016-04-24 00:34:44 · 1034 阅读 · 0 评论 -
Android中的定时任务
Android中都是任务的实现方式最近需要完成一个功能:定期的删除聊天记录,涉及到定时任务,经过一段时间的研究,发现大致有两种实现方式:Handler+Timer+TimerTask,AlarmManager.Handler+Timer+TimerTask Timer timer = new Timer(); TimerTask task = new TimerTask() {原创 2016-07-09 23:50:03 · 476 阅读 · 0 评论 -
微信表情
微信表情实现在我们的聊天应用中,发送表情消息是非常常见的操作,一直好奇要怎么去实现这个功能,于是花时间了解了一下。废话不多说,走起!首先我们研究一下这一块UI区域,布局实现比较简单,上面LinearLayout放EditText/ImageView/Button,中间可滑动的ViewPager,下面LinearLayout。 就功能实现也不复杂,将所有切好的表情图片放在资源目录下,使用时引原创 2016-07-10 20:02:06 · 759 阅读 · 0 评论 -
Android基础之LaunchMode
四种启动模式以及应用场景学习Android很久了,平时开发很少涉及到Activity的启动模式,对其概念变得模糊起来,今天就来重温一下LaunchMode.Standard标准启动模式,是Activity默认的启动方式,只要startAcitity就会创建一个实例,依次放入栈中,先进后出,如下图: 图有点难看,大家明白意思就行。应用场景:默认普通的应用场景SingleTop判断栈顶是否原创 2016-07-13 00:07:00 · 400 阅读 · 0 评论 -
Android启动模式与onNewIntent
onNewIntent在一个Activity中经常遇到onNewIntent(getIntent())者方法,但是一直不知道者方法是干嘛的,什么时候会被调用,最近看了官方api才算是明白,看下面官方解释: This is called for activities that set launchMode to "singleTop" in their package, or if a clie原创 2016-07-17 15:05:42 · 395 阅读 · 0 评论 -
Android之export,process
在清单文件中经常遇到export,process等关键字但是一直不知道他们是什么,有什么意义,经过查询资料才算搞懂。exportFlag indicating whether the given application component is available to other applications. If false, it can only be accessed by applicat原创 2016-07-28 01:00:46 · 1389 阅读 · 0 评论 -
Android之为什么一个线程只有一个Handler,Looper
之前在讲Handler原理点我的时候,最后做了一个总结,一个现在只有一个Handler,Looper…,如下图: 但是一直没有搞清楚为什么?Why? 最近偶然翻源码,终于是找到了原因:全局静态的变量sThreadLocal 用来保存Looper对象(就相当于一个Map集合,键位当前的Thead线程,值为Looper对象)public final class Looper {65转载 2016-07-28 01:24:12 · 5562 阅读 · 2 评论 -
Android图片压缩--缩略图
缩略图之前自己做过仿微信的相册和一些类似多图片获取与展示,面试的时候人家就问你这个相册显示的是缩略图吗,我仰望天空,一脸蒙逼,然后回答是是是,但是一直没有搞明白缩略图是个什么鬼! 压缩的目的:最近在做系统分享功能,对分享的图片需要压缩,目的有3个: 1.原图片一般都很大,有的1M多,甚至大的有10M多,压缩之后节省用户的流量。 2.节省上传时间,提升用户体验(有点废话,哈哈)。 3.原创 2016-07-19 23:46:50 · 825 阅读 · 0 评论 -
Android 之BlockingQueue
BlockingQueueBlockingQueue 是新增的Concurrent包中的一种阻塞队列特点当BlockingQueue为空, 从队列取数据时会让线程等待状态,直到能取出非空的数据,线程会被唤醒。 当BlockingQueue是满的,存数据到队列时线程也会进入等待状态,直到有空间,线程才会被唤醒。 A Queue that additionally supports operat转载 2016-08-04 00:07:58 · 3921 阅读 · 0 评论 -
图片显示不完整
记录一个bug最近遇到一个非常难搞的问题,花了蛮长的时间才算解决了,这里记录一下自己的解决过程!图片显示一半我们的APP里面偶尔出现图片只加载了一部分的问题,但是其他用户显示是正常的,也不算必现,就是偶尔听用户报一下,之前也没有太过关注这个bug了,没有及时去处理,作为了一个遗留问题,延后解决! 随着时间的流逝,突然一个大boss直接将这个bug反馈到我们研发,而且还是比较重要的原创 2018-01-15 20:24:45 · 5869 阅读 · 1 评论