- 博客(147)
- 资源 (35)
- 收藏
- 关注
原创 策略者模式和工厂模式的应用
##1策略者模式在开发中经常遇到的一种情况就是,我们在不同的业务情况,实现不同的业务,比如学生成绩>=90 优秀成绩>=80 <90 良好成绩>=70 <80 中等成绩<60 不及格在这种情况下,我们需要用if else来判断出每种情况,给不同的评分。 if(grade>=90){ toG
2019-01-05 17:11:20 841
原创 Android中常见的安全问题
Android中的安全问题,贯穿APK开发的始终,从编码,到与服务器交互,最线打包上线运行在终端上,都存在安全隐患。如果这些隐患排查或者规避,可能给APK或者服务器造成灾难性的后果。1、SQL注入攻击2、组件暴漏3、Log敏感信息泄露4、权限问题5、慎重使用开源库6、代码混淆,加密,加固7、webview8、zip目录攻击9、网络安全问题...
2018-07-03 22:34:11 1330
原创 Android中设计模式-Builder模式
引入:当我们创建对象传递参数的时候,往往通过构造方法来传,如下代码:上面代码这样写没有问题,但是如果参数不断的增加,而且增加可行,必选字段,这样使我们的代码很难编写,而且不容易实现,大量的增加工作量1、遇到多个构造器参数时考虑使用构造器 这时候,我们就可以考虑使用构建器模式。 2、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。3、使用场...
2018-06-06 18:03:32 4680
原创 多线程
1、多线程比单线程快吗 大一般情况下,多线程是比单线程快的。但不是一定 在单核cpu的情况下,如果做的工作是cpu密集型的,开多个线程,反而有可能比线程要慢,线程间的切换是需要消耗资源和时间的。 但是,大部分情况下,我们做的工作是IO密集型的,消耗的大部资源在IO上,因此CPU还是处于空闲状态,这时候,利用多线程,可以充分的利用资源 举个例子: 用挖掘机来挖...
2018-06-04 15:53:09 264
原创 Android设计模式-装饰模式
1、定义动态给的一个对象添加额外的职责或者功能。比生成子类更为灵活。2、适用场景动态的扩展类的功能3、UML图4、简单的实现1、定义Person抽象类,需要穿衣服的抽象方法public abstract class Person { public abstract void dressed();}2、Person实现public cl...
2018-05-28 22:05:45 227
原创 Android中的动画和原理(属性动画)
1、属性动画属性动画通过改变对象的属性来展示的动画效果,补间动画只是设置当前View在区域内移动,产生的动画效果,其实原View的还在原地,没有发生改变。 但属性动画改变了对象的属性。也就是改变了对象的颜色,位置,宽高等。2、示例public class MainActivity extends AppCompatActivity { private ImageVie...
2018-05-07 13:50:51 1643
原创 Android中的动画和原理(帧动画和补间动画)
1、Android中的动画分类Android中的动画可以分为三类:帧动画,补间动画,和属性动画 动画分类 说明 帧动画 通过不停的播放图片产生的动画效果 补间动画 对View的平移,旋转,缩放,透明产生效果 属性动画 动态的改变属性产生动画效果2、帧动画及其原理原理帧动画是按照一定的顺序播放一系列图片,从而产生动画...
2018-05-03 22:29:31 1455 1
原创 Android自动化测试一(Uiautomator)
1、Android自动化测试1、自动化测试的目的:1、减少人为的机械性的操作测试 2、大量测试(比如点击10000次) 3、长保时间测试(通话5小时) 4、节省时间,成本,覆盖面比较广2、Android中常用的自动化测试1、Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开...
2018-04-16 22:06:59 1996
原创 Bitmap的高效加载
1、Android内存分配Android给每个APK分配相应的内存空间,一般情况下只要APK超过个空间的限制,就会报OOM Runtime rt = Runtime.getRuntime(); long maxMemory = rt.maxMemory(); Log.i("maxMemory:", Long.toString(maxMemory / (1024 *...
2018-04-11 22:49:00 222
原创 ArcGis Failed to open file. May not be a valid tile package
ArcGis Failedto open file. May not be a valid tile package 在使用ArcGIS的时候遇到一些错误:官方网站:https://developers.arcgis.com/android/10-2/1、Failed to open file. May not be a valid t...
2018-03-23 10:47:36 618
原创 Java RSA
在数据传递过程中,一些非常重要的信息必须经过加密处理,防止其他人获取或者篡改信息。这就有了数字签名,数字签名处理的问题主要是两点 1、发送信息的人是真实确定的。 2、发送的信息是加密的且没有经过篡改的。 数字签名:保证数据发送人的正解性和发送内容没有经过篡改 数字摘要:发送的信息不是明文,别人获取到也难以解读信息。1、数字签名数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字
2017-11-05 00:00:12 448
原创 Android IPC、Binder和AIDL
1、前言 IPCPC(Inter-Process Communication)进程间通信,提供了各种进程间通信的方法。不仅是Android,其他语言也大很多情况下需要进程间通信的。Android本质上属于Linux,它的跨进程通信也基于Linux进程通信的原理。在Linux C编程中有几种方法 (1) 半双工Unix管道 (2) FIFOs(命名管道) (3) 消息队列 (4) 信号量
2017-08-05 17:28:25 684
原创 android adb
1、ADB1、adb adb(Andorid Debug Bridge)是安卓调试桥,Android 调试桥(adb)是多种用途的工具,该工具 可以帮助你管理设备或模拟器的状态。在以前eclipse开发android的时候,经常提示ADB无法启动 或不能连接的错误解决,这个时候我们需要重启eclipse或者重启adb。as上使用的adb连接比较稳定,断开连接的情况比较少了。 ADB是android
2017-06-27 22:02:36 539
原创 Git常用命令
1、Git分布式版本控制系统Git与SVN的区别 1、SVN集中式了,就是只有在服务器上才有一个完全版本(历史版本),而其他都是从服务器上下载的版本(一般只有一个),当提交时,把当前版本提交给服务器。别人使用是从服务器上下载使用。 2、Git分布式版本控制,没有中央服务器。每一个电脑上都有一个完全(包括历史版本)库2、常用命令1、基本常识命令1、cd :进入到某个磁盘,或者磁盘的文件夹下$ cd
2017-06-26 22:37:05 445
原创 工厂模式
1、工厂模式的作用工厂模式是用来创建对象的。但是,创建可以用new创建对象,为什么要用工厂模式呢?比如说我们创建一个Sample对象Phone s=new Phone ();看上去并没有什么不妥的地方啊,平常也一直这样写代码的。但是我们想想工作中如果Phone创建的时候要传入一个对象 那么代码可以写成这样Phone s=new Phone (context);如果再加一个呢?Phone s=new
2017-06-14 00:32:58 505
原创 Android NDK(2、基础知识)
1、.cpp、.h、.c文件的区别1、.cpp和.h文件的由来编译器编译代码的时候首先先编译各模块,然后再将各模块链接为最终的可执行程序 一般来说,一个文件就编译为一个模块 但是,各模块要能链接到一起,必须有一些共同的地方,例如模块A里面有一个函数,模块B想要使用这个函数,它就必须知道模块A的一些信息才行。体现在代码上,就是有些代码必须在几个文件里都写一遍 此时我们将这样的代码写在一个单独的文
2017-05-23 11:07:41 603
原创 Android NDK(1、简单入门和遇到的问题)
1、NDK环境配置1、NDK下载和路径配置NDK Location 2、在grale.properity中添加android.useDeprecatedNdk=true2、简单示例1、Jni测试方法public class JniTest { static { System.loadLibrary("jniStr"); } public static nat
2017-05-18 22:18:57 451
原创 android内存泄露
1、android中的内存泄露对于android中一些无用的对象,比如activity,view长期持有这些对象,导致无法被GC回收利用,再次使用的,重新申请内存。长久下去,应用程序无法分配新内存,导致OOM。 大部分内存泄露,不会直接导致程序崩溃,但长期下去,应用程序无法负担。一反面使用app耗用大量内存,卡顿,别一方面。最终还是可能导致OOM导常。square比较好用的内存检测工具 http
2017-04-20 14:48:32 415
原创 android事件分发和案例
1、事件分发android控件层次嵌套关系(平级嵌套,父子嵌套)的视图关系,也就产生view(viewgroup)对触摸或者点击事件的消费关系,每一个控件都可以消费或者拒绝消费事件,在嵌套的布局中,关系可能更复杂些。android中的事件分发机制,保证我们想要的view获取到相应的事件。 view和viewgroup本质是做为view,但对于事件分发机制还是有很多区别,viewgroup可以做为v
2017-04-05 12:58:30 1912
原创 android sql汉字排序问题
android中一般排序按照时间的升降,但有时候需求要求按照字符串排序,刚开始想获取首字母排序,感觉比较麻烦,后来找到android的sqlite中有这样的原生功能android中默认汉字(字符串)排序规则按照unicode排序因此如果字段是汉语的话要用以下方式进行排序orber by 字段 COLLATE LOCALIZED ASCcollate用于字符串表达式排序规则转换 以下是sql中的语
2017-03-27 17:40:52 2149
原创 android tree树状列表+checkbox
在github上找了好久,想改成自己想要的效果不容易,是终改成了效果,记录一下 1、从服务器传来的数据,可能是深度树状结构,通过递归对树进行遍历 2、把json数据,转换成我们的TreeNode数据。 3、动态的设置list中距离左边的距离,实现伪层次结构。 代码调用package com.example.treedemo;import android.app.Activity;impor
2017-03-16 22:19:04 2320
原创 popwindow的封装
popwindow使用中还是遇到几个问题,记录一下 1、popwindow弹出位置,还未解决弹出在控件上方的办法(目前高度写死) 2、popwindow弹出时背景变灰(类似dialog的效果) 3、popwindow与Listview使用时,item宽度自适应解决。 4、简单的对popwindow进行封装,打造易用的popwindow。 1、PopList类package com.exam
2017-03-12 19:18:30 591
原创 一步一步学自定义View(1.简单入门)
1、自定义Viewandroid中可能遇到很多需求要求自定义view,一般github上都有各种各样的酷炫效果自定义view,特别是仪表盘,柱状图,饼状图都有,但还是不免遇到一些特别的需求,自定义样式难以修改开源库,因此还是需要自己来实现。接下来记录自己一点一点学习自定义view的过程。接下来主要实现这样的效果(简单的实现画圆,和简单的动画效果) 项目目录结构 2、自定义view中构造方
2017-02-23 22:24:54 1692
原创 Rxjava(2.Schedulers调度器)
1、Schedulers调度器Schedulers将用简单的方式创建多线程。对于android移动端来说,做耗时操作只能在子线程中,返回结果后刷新UI又得切换到主线程中。很多时候我们需要new Thread(),然后用Handler进行请求后的回调,或者借助Asynctask类。这样代码在一个类中这样写可能不多,但对于android来说,每个界面几乎都要请求网络,刷新UI。因此这样的工作一来增加的代
2017-02-22 15:22:09 2776 1
原创 android观察者模式
android设计模式学习笔记(何红辉,关爱民)1、观察者模式1、Subject抽象主题抽象主题,也就是被观察者(Observable)的角色,抽象主题角色把所以观察者对象保存到一个集合中,每个主题都可以有任意观察者的数量,抽象主题提供一个接口,可以增加和删除观察者对象。2、ConcreteSubject具体主题具体主题,该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册
2017-02-15 22:29:42 549
原创 dialog+多个listview+checkbox
android中有时候遇到dialog+多个listview+checkbox的选择问题如图所示: 在dialog中左边为4个TextView,右边为四个listview(感觉不太合适,但没找到比较好的解决办法)。左边选中时动态的隐藏与显示listview,最后取出四个listview中checkbox的值。代码如下: 在主界面中package com.example.mydialog
2017-02-03 21:44:16 1001
原创 Rxjava(1.基本使用)
1、rxjavarxjava的本质rxjava是响应式编程的意思,本质是观察者模式,以观察者observe和订阅subscribe异步响应式开发。RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by usin
2017-01-21 22:18:58 1111
原创 android小项目
1、接口地址网上找到一些免费公用的接口,表示感谢该博客是一个android中的小项目,主要封装和练习开发中遇到的常用知识点,进行总结。项目简单易懂,大神勿喷。http://gank.io/apihttp://showdoc.dagoogle.cn/index.PHP/6http://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&locat
2017-01-20 21:00:55 2956
原创 rxjava+retrofit简单demo
rxjava+retrofit简单入门demo1、rxjava的三个行为1、观察者Subscriber2、被观察者Observable3、订阅关系observable.subscribe(subscriber)2、rxjava示例请求apihttp://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&location=北京&output=json
2017-01-19 15:37:29 739
原创 popwindow+listview
实现下拉菜单,spinner一般也能够实现,但自定义比较麻烦,比如spinner有默认值时,还得动态添加spinner默认值,而用popwindow+listview也能实现相同的效果,并且自定义比较简单。 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/a
2017-01-01 23:33:23 4270 6
原创 EventBus3.0的使用
1、EventBushttp://greenrobot.org/eventbus/documentation/官方学习文档EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/
2016-12-25 21:11:45 1341
原创 java内存区域与内存异常(jvm学习)
深入学习java虚拟机笔记java虚拟机运行时数据区域java虚拟机在执行java程序的时候,会把它所管理的内存区域划分成若干不同的数据区域。这些区域有不同的用途,和创建销毁时间,有的区域随着进程的启动而存在,有些区域依赖用户线程的启动和结束而建立和销毁。 java虚拟机所管理的内存将会包括以下几个运行时数据区域:程序计数器java虚拟机栈本地方法栈java堆方法区1、程序计数器程序计
2016-12-23 23:31:34 456
原创 android柱状图和饼状图的简单使用(MPAndroidChart)
MPAndroidChartMPAndroidChart是一个开源的图标库,能够实现各种各样的效果,自定义比较容易,在项目中有简单使用,做一个记录。1、柱状图的简单使用效果图: 1、导包,在这用的是两个jar包2、xml文件中配置<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.an
2016-12-18 01:48:05 10050 5
原创 RecyclerView嵌套RecyclerView
在项目中有时候遇到recyclerview嵌套recyclerview的情况,虽然不建议这样嵌套使用,但有时候也没办法。 示例: 代码如下: 1、在Activity中代码如下package com.example.recyclerview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;i
2016-12-11 23:20:46 3258
原创 java中面向对象
1、java面向对象java是一门面向对象的语言,在面向对象的世界中,把事务看成对象,面向对象的做法确实是把属性和功能封装起来,但是其核心是归类和抽象。把相关的属性和功能集中起来,把可以分离的部分隔绝开来,从而把复杂的业务逻辑切割成互相之间可以相对独立的部分,降低开发的难度。主要从下面几个方面理解: 1、理解类,接口,方法,构造器 2、理解修符:public,protected,private
2016-11-26 23:08:25 699
原创 Retrofit提交参数
1、Get请求url请求示例 http://gank.io/api/data/福利/{pageCount}/{pageIndex} http://gank.io/api/data/福利/5/1(5和1代表分页中的参数)public interface Api { //http://gank.io/api/data/福利/5/1 @GET("api/data/福利/{pageCo
2016-11-24 23:51:47 7046 1
原创 线程和线程池
这篇博客中简单介绍了下线程和线程池,今天主要 从示例上更加了解线程和线程池的工作 http://blog.csdn.net/androidxiaogang/article/details/49682885 文章为自己搜索总结,加上自己的一点看法,如果有误,欢迎斧正。1、进程,线程,多线程从普通PC应用上来讲: 开个QQ,开了一个进程,在QQ的这个进程里,发送消息或者下载文件之类的,这就是打了线
2016-11-23 18:31:19 565
原创 java中数组
1、数组是一种引用类型的变量1、java中的数组是用于存放一系列相同类型数组的(即可以存放基本数组类型,也可以存放引用用类型,只要类型相同就可以)2、数组初始化后,在内存中的大小已经确定,长度不可以改变,即使把数组中的数据移除,数组的大小,仍然不会改变,在内存中的大小依旧不变。3、数组的初始化是指为数组分配内存空间,并这每个元素赋初始值。比如int数组默认0,引用类型String(默认值null)。
2016-11-22 18:00:00 573
原创 retrofit
1、Retrofit介绍http://blog.csdn.net/androidxiaogang/article/details/51725798 在上篇博客中介绍retrofit入门官方介绍地址 http://square.github.io/retrofit/2、流程示意图3、Retrofit代码分析API类中public interface Api { //http://gank.
2016-11-20 23:05:54 673
极品五笔2014版本
2017-10-17
dialog+checkbox
2017-02-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人