- 博客(36)
- 资源 (13)
- 收藏
- 关注
原创 小议MVC、MVP、MVVP架构模式
架构模式从来都是为了解决问题而生的,Android里的MVC Model和View耦合,出现了MVP,又因为activity与实际界面与presenter耦合出现了想将view与activity降低耦合的MVVP,或者其他架构模式。目录用 [TOC]来生成目录:目录MVCMVPMVVPMVC观察者模式最初始的模块归类模型 M...
2018-07-25 19:46:22
2442
原创 NohttpRxUtils是我为什么不愿意继续使用Nohttp的原因
前言 从RxJava出来到现在,就不断有人说Rxjava是如何如何好的一个框架。但是呢?其链式调用决定了不能直接兼容Nohttp等其他库。就比如说,我有业务A,B,做着不同的事,然后有一天我需要在A里做B里的部分业务片段。这时代码会怎么做呢。大概无非就是在A中声明接口、对象、set方法(并在适时调用该对象方法),将A对象a赋给B,并在B中实现该接口方法、使用a.set…(this)初始化A...
2018-03-06 13:50:07
641
原创 如何防止activity的双重引用和Handler等造成内存泄漏
今天说一下作为新手的我们经常犯的错—-以activity等作为参数造成双重引用而产生的内存泄漏【不论伪MVC还是MVP,只要存在模块引用了有自己生命周期的对象】。DDMS(Monitor->system info好像)、Findbugs等一些工具是可以检测到的,但我觉得集成leak检测最省事,android有像leakcanary这样的开源框架。 而Android studio总是...
2017-12-25 21:02:06
935
原创 Android API24以上Error inflating class android.support.design.widget.TabLayout
在API23中使用了TabLayout,在升级到API24进行编译后,程序运行时出现了如下错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.activity.ViewPagerActivity}: android.view.Inflat
2017-09-17 10:39:58
6804
1
原创 Android GridView自适应高度(不出现滚动条)
最近有个需求就是,网格状显示,且需要自适应高度(不出现滚动条),大概看了一下网上的解决方法,最终采用了如下方案: public class MyGridView extends GridView { public MyGridView(Context context) { super(context); } public MyGridView(Context
2017-09-17 10:13:24
6549
2
原创 ListView/RecycleView与树结构实现多级目录
很久前做过一个多级ListView的多级目录结构,终于有闲时间来分享了。先看效果图吧: 常规做法 ListView为多级的显示方式,与此类似的有文件系统、省市区分级等等,类似于B树。 其数据结构一般如下可能: A. 通过索引连接树的节点,主要特点如下: 某一点通过索引将所有点联系,类似于链表,任何两点间没有直接关系,如果要得到某个点需要算法和当前表/总表来遍历。存
2017-09-02 15:35:03
1108
原创 IP Camera在Android4.4及以后正确的连接方法
一般步骤: 修改Android eth0地址,确保与IPC处于同一网段。修改如下: adb shell ifconfig eth0 192.168.1.122(IP地址依据IPC设定) 如需查看是否修改成功,可以使用命令: Netcfg 开始使用IPC,登录IPC设定好的管理地址。如192.168.1.88。使用前记得按照网页提示安装adobel flash插件。如果没有提示,请在浏览器
2017-05-23 14:39:56
6421
原创 JAVA必会之线程池管理
JAVA通过Executors提供了四种线程池: 1、newCachedThreadPool 2、newFixedThreadPool 3、newScheduledThreadPool 4、newSingleThreadExecutor 各代表什么意思自己使用一下就知道了,下面来说线程池普通用法及管理,代码如下:public class ScheduledThreadManager {
2017-05-18 13:36:10
376
原创 粗浅例子解释MVP实际应用
接口 类似于抽象类,但是在接口里,方法是没有方法体的,都是抽象方法。但是在抽象类中,只要有抽象方法的类就是抽象类,也就是可以有方法体的。传说中的MVP,其实也就是如此了。 接口是用来处理C++中多继承的情况的。Java中是没有多继承的,只有单继承。 自己总结了一下接口的特性: a. 接口的访问修饰符可以是public 或者是默认修饰符default,只能是这两种 b. ...
2017-05-17 11:37:31
457
原创 Service与Activity交互之IPC
如题,有个场景就是,在Service中进行文件上传,监听上传的各种情况,且上传不能够影响应用。本次就拿FTP吧。 首先想到远程服务(Remote Service)。 接下来,直接上代码,步骤: 1、编写AIDL interface IFileUploadServices { /** * Demonstrates some basic types that y
2017-05-16 14:37:26
426
原创 官方Android Camera2 video Demo崩溃的修正
最近在做关于视频(YUV<–>h264)、camera、camera2相关的项目。 首先要赞一下camera2,设计的非常良心。1920*1080的分辨率下帧率依然能保持30fps。接下来就只剩下吐槽了。 花了整整一天的时间做了camera2的在一个界面上录像+拍照的app。唯一的感受就是坑太多! 接下来,步入正题。官方demo,总会在stopRecording()这里崩溃。甚至底
2017-03-16 19:23:25
8394
4
原创 中国天气网Android XmlPULL解析:通过城市名获取weatherCode
之前项目中使用和比较过多个天气API:百度天气,新浪天气,中国天气网等,返回值均为JSON数据格式。现在将中国天气网城市-天气对应表的解析过程贴上来,方便后来的小伙伴开发。本文指在使用中国天气网,通过三级省市名来获取查询天气需要的城市代码。 一、 小结: 1. 百度天气 与百度地图一样,需要申请自己的AK。有集成百度定位的正好可以使用。API地址为: URL=“http://api.map
2017-02-16 17:28:26
2830
转载 【转】Android应用程序:(jni方式)控制LED/GPIO
GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。 在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号搜索。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提
2017-02-12 14:57:00
3100
原创 第一次实习面试结合近两年工作的杂谈
一次简单代码题引发的个人感想事情是这样的: 大三学期末,苦于一直隐居山林,我想去公司实习锻炼一下顺便感受一下咱们软件界。正好看到有西安的公司(众所周知,西北农林科技大学,址在杨凌,北校区居于山上,学校一大亮点是树多,各种树,据说很多都很值钱),投了简历,被通知面试而后组起了三人小队出发了。是在西安亿阳信通,国内一家算得上大型的软件公司了。 记得那天天气不错,毕竟人生中第一次面试,难
2017-01-18 20:35:47
564
转载 【转载】7个你从未见过的Java问题最佳答案
转自:StackOverflow:7个你从未见过的Java问题最佳答案 原文:StackOverflow: Seven of the Best Java Answers That You Haven’t Seen 最近发现了这篇不常见的JAVA文章,相信很多JAVA开发或JAVA安卓的大家都会很有帮助。同时不得不感叹自己的菜鸟水准。 对开发人员来说, StackOverfl
2016-11-21 15:26:18
338
原创 安卓适配所有屏幕UI的方法
问题背景:之前项目里UI是通过JSON模版来进行控制的,为了数据通用性强(与字体大小对应,匹配xml方便)采用dip作为单位。但遇到的问题是在不同的分辨率或屏幕密度的屏幕上不能够正常显示。虽然采用相对布局的模板设计既能解决屏幕适配问题又能解决手机在横竖屏翻转UI切换问题,但这样做有可能因为屏幕不同而造成UI显示变形且目前的需求不考虑屏幕翻转。所以在不改变我在很久前定好的UI模版规则的前提下,使一个模
2016-11-01 23:30:13
1346
原创 ExecutorService OutOfMemoryError: thread creation failed
最近在ViewPager中定时的平滑滑动函数体里使用了ExecutorService,由线程池执行滑动动作。但不知道怎么的,以下部分抛出了内存溢出错误。但改回原来的每调用一次函数体执行一次new Thread(new Runnable…).start()又感觉虚拟机太忙了。代码如下: 初始化: if(this.executorService == null)//executorService为一
2016-10-25 21:30:06
2298
原创 Android集成百度地图步骤简述
最近接触了地图、定位方面的API,虽然网上相关的东西有很多。但还是想从头到尾的介绍一遍安卓集成百度地图,方便第一次相关开发的同学学习。 首先,集成百度API需要在百度地图开放平台 申请自己的AK。当然你得先注册和认证通过。 如图: 这里创建应用,选择自己想要的应用类型,如果是安卓APP集成,那选择Android SDK,接下来需要填写的还有SHA1和包名,SHA1值可以在
2016-10-19 22:35:15
1639
转载 【转】图片缓存之内存缓存技术LruCache,软引用
转自:http://blog.chinaunix.net/uid-26930580-id-4138306.html每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个问题曾经让我觉得很烦恼,后来终于得到了解决, 那么现在就让我和大家一起分享一下吧。 这篇博文要讲的图片缓存机制,我接触到的有两钟,一种是软引用,另一种是内存缓存技术。 先来看下两者的使用方式,再来作比较。
2016-10-18 21:03:34
362
转载 com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
转自:http://www.cnblogs.com/jasonduan/p/5166114.html最近在使用百度地图API的时候遇到了以下问题: Error:Execution failed for task ‘:app:transformResourcesWithMergeJavaResForDebug’. com.android.build.api.transform.Transform
2016-10-18 19:59:02
1707
原创 安卓TimePicker在当前页面通过按键事件切换焦点的方法
问题: 相信使用过TimePicker的人都知道,这个控件本身有自己的按键事件(如果设置可获取焦点”focusable(true)”时,这个控件本身的按键事件将“失效”,这时按上、下键都不能选择时间而只是改变焦点的位置) 所以,当当前页面中有包括TimePicker在内的多个控件需要通过按键来获取焦点时,就显得格外痛苦了。如下是我做的Demo效果: 初始焦点在TimePicker的
2016-08-25 21:14:35
1767
原创 一次面试题:公交网络上(双向图)最优路线的笨解法
PS:因为兴趣爱好,大学里做过许多类似的小程序,比如:能够识别基本数据类型的词法识别器,九宫图求解等等。其中觉得比较有代表性的算是这个了,所以拿出来分享一下,毕竟对于大三的我来说能独立做出来也是有点成就感吧。 根据某市地铁线路图写一个地铁票价计算程序 需求描述: 1.计费规则:最低2元,超过5站以上每站加收 0.5元,换乘重新起算,例如L1先坐4站,换乘L2再坐6站,结果就是2+2.
2016-08-03 22:47:26
1773
原创 Android Otto事件总线结合Fragment与AsyncTask的分享
发现了一种能够减小不同组件间耦合度的框架:Otto。非常好用。官方Demo做得很好,左边地图右边坐标的。我自己也写了个Demo,文中会提供Demo供大家学习。由于Demo是从之前的项目修改而来,如果有不支持armeabi的CPU。可以把jni和libs下的armeabi文件夹都删掉,此Demo没有用到测试用的.so库(时间过久可能不是原来的库了,会出错)。 Android Otto 如果你在
2016-07-25 17:08:25
621
原创 Vitamio的小修改及花屏问题的探讨
最近在做安卓视频模块,背景如下: 视频竖屏播放时,SurfaceView不能对视频进行翻转,采用安卓4.0后的TextureView新控件又会容易受到硬件性能影响(包括TextureView在内试过好几个OpenGL实现的视频播放控件,其性能都更容易收到性能影响,比如播放帧率较大的视频时或者有多个图片资源不断切换时会造成卡顿和丢帧),采用Vitamio后可以解决竖屏播放问题,但其性能还是有待优
2016-07-16 16:58:32
3596
原创 安卓上层代码通过onTouch事件模拟实现"onClick"的动作,以及触屏"灵敏度"的设置
PS:以下通过开发时遇到的问题来具体介绍。关于安卓设备悬浮球不能响应”Click”事件的总结背景如下:安卓电视红外触屏框不能响应onClick事件,触屏框底层驱动不支持onclick事件。 以下通过对项目从分析到解决问题过程作一个简单的介绍:一、遇到的问题:1、 安卓应用悬浮球不能响应Click事件。2、 触摸框边缘获取数据异常。3、 对于
2016-07-05 09:21:22
5480
原创 DirectionalViewPager常见问题及解决方法小结
前些时候在网上找到了一个DirectionalViewPager的控件,经过多次修改和优化后,实现了比较复杂、且灵活的,有足够稳定性的自定义广告展示控件。DirectionalViewPager这个控件网上已经有很多了,这里提供GC上的ViewPager的 API地址: Android 5.1.1_r1/ android.support.v4.view.ViewPager 下面总结下我
2016-06-29 15:03:30
2256
原创 org.springframework.beans.factory.BeanCreationException: Error creating bean with name的解决方法
这个问题在大学的时候就遇到过了,其实错误很明显,不能通过name “xxx”创建bean对象。我只能说这是配置文件的问题!要么是xxx不是全路径且你没在标签中加default-autowire=”byName” 如下:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.o
2016-06-21 00:20:33
2426
原创 安卓文件管理器-GridView实现
这次说一下九宫格文件管理器(GridView实现,1920*1080分辨率,Android4.4.2) 先上图,我的最终版的实现: /storage为根路径 安装应用(整个安装过程放在线程中以防止ARN造成进程被Kill(定制过的系统,原生安卓只有在极端情况下才会kill进程,可以看一下ActivityManagerService.java中管理Activity的代码))
2016-06-19 19:17:37
2131
原创 安卓 文件管理器-ListView实现
现在21:46,加班快要结束了,没办法,零碎的事情太多了。客户也是这边那边都在催,这边说APP有问题要改要优化,那边又接了个新的活。幸好我只是做做应用层,不用像师傅那样深入底层做开发和修改(像我这种菜鸟也就应用层和应用框架层能学习了,知道的底层的一些东西也就师傅说过而已)。今天复习一下ListView实现安卓文件管理器,包括文件的筛选、apk的安装,以及BaseAdapter的应用等。 直接上代码
2016-06-16 21:51:19
1575
原创 Android ListView的优化
这次复习一下ListView的优化,大概分三种方法: 1.view item重用机制(如果Adapter的getView(int position, View convertView, ViewGroup parent),当convertView==null时才会通过findViewById()或者Inflate在xml中实例化,否则直接拿来用) 2.viewHolder缓存item(不
2016-06-12 21:00:08
382
原创 5种单例模式的介绍与比较
今天要介绍一下java的5中单例模式及相互的比较。 下面我会通过代码进行详细的介绍和比较,代码中会带有注释,如果觉得在这里看比较乱,可以直接复制到自己创建的.java文件中进行阅读(会有错误提示,如果强迫症,将部分相同的函数用”//”注释就好了),代码如下:package com.tcl.adclient.utils.others;import java.io.ObjectStreamExcept
2016-06-11 22:40:51
511
原创 Android AIDL的总结与介绍
PS:按照惯例,在这闲扯一下个人选择和游戏吧,其实当时博主也收到过游戏公司的Offer,算是个还行的公司吧,还有电信。哈哈然而当时(15年)太喜欢玩了,一找到工作就直接签了,而且是选择了去惠州而不是深圳。搞的所有人都对我惊讶和奇怪。其实,我觉得如果一个人能够有足够的钻研精神,较高的学习效率,剩下的就关乎个人选择了。其实前两年在哪都一样,当时我甚至有去小公司的想法,累一点但进步快。再说游戏吧,除了女生
2016-06-09 21:40:58
626
原创 安卓应用重启时偶发性退出,结合Activity与Service生命周期的解读和总结
ps:在开始之前,我想扯一下关于智商和情商与个人发展的问题,因为之前听到不少人说。在我的理解,如果你是一个刚刚毕业的软件类学生,那么你还是不要表现得像情场老手,而是一心去做东西学技术的好,因为第一大多数软件人都不怎么喜欢太聪明和太会说话的人,第二对于现在的你来说智商就是通往后期的门票。而情商,其实就是在你实力可以的时候让你走的更远的必要条件了。 ps:我要开始带新来的小伙伴了,吗?一想到一年前
2016-06-09 11:04:53
932
原创 安卓4.0后新控件TextureView解决SurfaceView在修改默认屏幕方向后(硬件导致)视频方向无法翻转的问题
之前做东西的时候一直用SurfaceView来作为视频播放的控件载体,而前些时候客户突然出了这么一个新需求:用户期望能够为竖屏适配一套UI,同时将默认方向改为竖屏。 要修改系统默认屏幕为竖屏很简单: 可以通过修改/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中的rotatio
2016-06-07 17:29:20
6533
2
原创 探索之安卓调用GO生成的动态链接库"failed: dlopen failed: could not load library "libpthread.so.0" needed by ***"的了解
如题,在安卓平台上通过JNI调用GO语言编译生成的so库。JNI部分要是做过几次的应该觉得不难吧(动、静态编译,编写规范等待)。 原因在最后给出,可以直接拉到最后具体的错误如下:CDT build Console08:43:38 **** Build of configuration Default for project JNIVoiceMM ****"D:\\adt
2016-06-06 23:43:09
6604
Otto_AsyncTask_Fragment_Demo1
2016-07-28
Otto_AsyncTask_Fragment_Demo
2016-07-25
Otto_AsyncTask_Fragment_Test Demo
2016-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人