自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (3)
  • 收藏
  • 关注

转载 类抢红包方案

主要引导用户授权、类似微信抢红包功能,也就是实时监听设备的通知栏消息,并可以捕获到通知的内容,然后进行对应的操作。之前尝试过很多方式,最后感觉前台service对于服务保活相对好使(据说这个微信也用过的方案),知情者可能要问了:前台service不是有个通知栏一直显示么?这样对用户来说不是很好。我们这里可以使用两个service互调来实现不显示通知栏,原理如下:对于 API level

2017-10-20 20:28:43 536

原创 android统计上报策略

最近做项目很幸运能跟大牛学到很多框架及策略的方法,这里我们是要在机器人上统计语音相关的日常语音指令信息上报后台,当然这里有很多方法实现。1、数据库保存数据到上报队列实现一旦收到的指令立刻上报(这种方法上报较频繁,服务器压力比较大),上报成功后清除数据库2、 终极解决方案是采用定时器5分钟上报一次,批量上传,每次数据采集入数据库,上报分页查询批量上报才是比较科学的策略。

2017-05-06 14:39:42 998

原创 android service 接口权限管控

在项目里经常会碰到一种情况就是我们封装一个SDK接口对外提供功能调用,原理是第三方应用透过SDK bind服务,问题来了,那么这些接口有的可以对外有的想只有自己使用,这个时候该如何解决呢,这里提供3个思路1、通过getcallinguid方法获取当前调用者的id进而拿到调用者包名,然后通过包名拿到签名,通过调用者签名和自己的签名比对达到管控api目的(这种情况需要第三方也打上我们的签名,这个方

2017-05-06 14:33:19 2052

原创 android loader用法

Loader是一个Android上的异步加载方案。它只能实现在Activity和Fragment。你需要实现LoaderManager.LoaderCallbacks。 而实现这个接口,必须实现三个虚函数:public Loader onCreateLoader(int id, Bundle args);public void onLoadFinis

2016-04-21 11:19:52 645

转载 Android 5.0中使用JobScheduler

介绍在Android开发中,会存在这么些场景 : 你需要在稍后的某个时间点或者当满足某个特定的条件时执行一个任务,例如当设备接通电源适配器或者连接到WIFI。幸运的是在API 21 ( Android 5.0,即Lollipop )中,google提供了一个新叫做JobScheduler API的组件来处理这样的场景。当一系列预置的条件被满足时,JobScheduler API为你

2016-04-21 11:12:39 511

原创 Android 异步查询框架AsyncQueryHandler的使用

AsyncQueryHandler简介:异步的查询操作帮助类,可以处理增删改(ContentProvider提供的数据)使用场景:在一般的应用中可以使用ContentProvider去操作数据库。这在数据量很小的时候是没有问题的,但是如果数据量大了,可能导致UI线程发生ANR异常(超过5秒)。当然你也可以写个Handler去做这些操作,只

2016-04-21 11:07:14 410

原创 Fork/Join框架介绍

ForkJoinPool 是 Java SE 7 新功能“分叉/结合框架”的核心类,现在可能乏人问津,但我觉得它迟早会成为主流。分叉/结合框架是一个比较特殊的线程池框架,专用于需要将一个任务不断分解成子任务(分叉),再不断进行汇总得到最终结果(结合)的计算过程。比起传统的线程池类ThreadPoolExecutor,ForkJoinPool 实现了工作窃取算法,使得空闲线程能够主动分担从别的线程分

2016-02-15 10:45:12 424

转载 Android 上层RecoverySystem类

尝试将imx51使用OTA方式进行recovery,将android_recovery.img放入/cache/分区下然后再下一次重启的时候进行分区更新,但发现放入的文件会被莫名删除,logcat中搜索到recovery相关log,tag为recoverysystem,尝试在android工程framework的os代码中寻找代码,找到相关代码,代码最后有将cache分区进行删除仅保留last_l

2016-01-05 15:17:28 4145

转载 DynamicLoadApk 源码解析

1. 功能介绍1.1 简介DynamicLoadApk 是一个开源的 Android 插件化框架。插件化的优点包括:(1) 模块解耦,(2) 动态升级,(3) 高效并行开发(编译速度更快) (4) 按需加载,内存占用更低等等。DynamicLoadApk 提供了 3 种开发方式,让开发者在无需理解其工作原理的情况下快速的集成插件化功能。宿主程序与插件完全独立

2015-12-30 11:53:16 410

原创 面向对象编程 输出一段关于操作系统的文字:假设Unix很不错,Windows很差

幼稚的面向对象编程     PrintOS.java    public class PrintOS    {        public static void main(final String[] args)        {            System.out.println(OSDiscriminator.getBoxSpecifier()

2015-12-26 11:07:56 338

转载 android布局性能优化

1、抽象布局标签(1) 标签include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。下面以在一个布局main.xml中用include引入另一个布局foot.xml为例。main.mxl代码如下:Java1234567891011121314xml versio

2015-12-24 15:30:15 477

转载 如何使用HierarchyViewer分析优化布局

为什么使用HierarchyViewer    不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。怎么

2015-12-23 11:46:40 1336

转载 android性能优化

根据Android的层次结构,性能优化也是分层次进行的,本文会分别对Application、Framework、Native、Kernel各层做总结,每层主要会从性能优化的基本思想、优化技巧、优化工具几个方面进行说明。第一章Android应用性能优化(概述)    应用程序的性能问题是最明显、最容易体现的一类,表现形式也五花八门,举几个例子:应用程序第一次启动速度慢,或者进

2015-12-23 10:42:01 395

原创 android帐号管理token问题

对于帐号管理,由接口IAccountManager描述其相关的一组行为AccountManagerService是Android的系统服务。它实现了接口IAccountManager定义的这一组行为。这些行为的实现依赖应用程序中定义的    Authenticator。 AccountManager是一个面向应用程序开发的组件。它提供一组对应于IAccountManager协议的应用程序接口。

2015-12-04 16:58:21 1651

原创 Android 中的定时事件使用

android下要使用定时器有很多你可以使用timer、hander等等,但在待机下我们一般使用AlarmManager,因为android省电机制决定在待机的情况下各种thread定时器通通挂起,无法达到预期效果。1、androidAlarmManager提供了四种类型的闹钟:     ❑ ELAPSED_REALTIME     在指定的延时过后,发送广播,但不唤醒设备。 

2015-12-02 16:33:49 803

转载 android view SurfaceView GLSurfaceView的关系和区别

Android游戏当中主要的除了控制类外就是显示类View。SurfaceView是从View基类中派生出来的显示类。android游戏开发中常用的三种视图是: view、SurfaceView和GLSurfaceView的区别如下: View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢SurfaceView

2015-11-23 14:55:48 417

原创 用户手动杀死进程通知栏不消失解决方案

我们都知道当应用被干掉的时候是不会收到任何通知的也不会回调onDestory()啥啥的,当你的应用被kill了这时候你的通知已经显示在通知栏了,so你应用都不存在了还显示在上面一定是不正确的,所以google了半天没啥结果,最有无奈请教国外大牛的吧,如何请教你懂的(英文关键字How to remove all notifications when an android app (activit

2015-11-20 11:53:20 6136 1

原创 解决手机关闭屏幕线程挂起问题

最近在做一个关闭屏幕60分钟后自动下载的需求,整个模块已经竣工,测试发现在充电状态下没有任何问题可以直接下载,但是在非充电状态下自动下载失效了,这时首先要观察日志看看到底是什么情况,小插曲平时都是usb debug看日志,现在的状态是不插usb自然无法通过这个来看日志,还好android就是nb提供wifi连接adb命令来查看日志,前提是手机和pc必须在同一个局域网,具体命令如下:1、

2015-11-19 17:16:42 3103

原创 Volley接口使用的重构

最近在做手机rom OTA项目,项目不算大但原来的代码耦合比较高,对后期维护不是很好,,设计的好处不用多说增强代码复用、更容易扩展、更容易读懂、更容易维护,索性大刀阔斧逐步进行代码重构、优化,其中对volley的使用也是问题比较多,所以优先重构了下,后续将逐步对各个不合理的地方重构,后面每个项目都会规划思维导图、类图进行设计不在做码农,具体代码如附件,整体设计类图如下:

2015-11-19 16:49:41 512

转载 android 蓝牙通信编程

公司项目涉及蓝牙通信,所以就简单的学了学,下面是自己参考了一些资料后的总结,希望对大家有帮助。以下是开发中的几个关键步骤:1,首先开启蓝牙2,搜索可用设备3,创建蓝牙socket,获取输入输出流4,读取和写入数据5,断开连接关闭蓝牙下面是一个蓝牙聊天demo效果图:2015-09-20更新(

2015-11-15 00:49:20 1240

转载 动画库的封装和快速框架

提到动画,Android本身自带的动画类Animation已经做到支持3.0及以上了,虽然也做了很好的封装,但是做起复杂动画来还是不够像上边那样简洁。在关于动画兼容方面,github上的大牛Jake Wharton又做了一套动画开源库NineOldAndroids,效果很好而且支持3.0级以前的版本,确实很值得称赞。而在此基础上,有很多高手又做了二次封装,实现了复杂动画,同时保证方便简洁,而且通用

2015-11-11 10:45:28 888

转载 Android M 部分API变动研究

Android M发布有一段时间了,AndroidM在API上的改动,并不比AndroidL小。我们只能感谢Google又给android程序员带来的新的研究课题,以前开发的程序如何才能在AndroidM上顺利运行,因此,让无所事事的程序又要折腾一阵子了。权限请求方式变更动态权限请求是Google在对Android的安全问题进行一次非常有效的提升,对用户是非常有用的,用户可以很任性

2015-11-09 10:28:29 463

转载 JDK中的设计模式应用实例

在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式,正因为如此,我们可以在不修改JDK源码的前提下开发出自己的应用软件,本文列出了部分JDK中的模式应用实例,有兴趣的童鞋可以深入研究,看看前Sun公司的开发人员是如何在实际框架开发中运用设计模式的,,Sunny认为,研究JDK类库中的模式实例也不失为学习如何使用设计模式的一个好方式,。 创建型模式

2015-11-05 11:44:21 560

转载 代理模式(二)

代理模式应用实例       下面通过一个应用实例来进一步学习和理解代理模式。       1. 实例说明       某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下:       (1) 在进行商务信息查询之前用户需要通过身份验证,只有合法用户才能够使用该查询系统;       (2) 在进行商

2015-11-03 11:09:06 666

转载 代理模式(一)

代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。 15.1 代理模式概述       近年来

2015-11-03 10:59:40 390

转载 模板方法模式深度解析(三)

钩子方法的使用            模板方法模式中,在父类中提供了一个定义算法框架的模板方法,还提供了一系列抽象方法、具体方法和钩子方法,其中钩子方法的引入使得子类可以控制父类的行为。最简单的钩子方法就是空方法,代码如下:[csharp] view plaincopypublic virtual void Display() {

2015-11-03 10:49:56 297

转载 模板方法模式深度解析(二)

下面通过一个应用实例来进一步学习和理解模板方法模式。       1. 实例说明      某软件公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下:      (1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示;      (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(

2015-11-03 10:41:58 1074

转载 模板方法模式(一)

在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同,如图1所示:图1 请客吃饭示意图        在软件开发中,有时也会遇到类似的情况,某个方法的实现需要

2015-11-03 10:31:01 506

转载 Glide 源码解析

泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。Glide和Picasso使用上有90%的相似度,但是内部实现机制有很大区别 Glide介绍。1.主要特点(1)支持Memory和Disk图片缓存。(2)支持gif和web

2015-10-30 17:27:21 11289 3

转载 Material Design之CollapsingToolbarLayout使用

CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。

2015-10-30 17:25:46 515

转载 goolge官方推荐图片加载框架glide使用介绍

简介:glide为Android上一个专注于图像加载和缓存的库,后续可以考虑介入此框架。使用步骤:一:导包在项目目录下,打开build.gradle文件,输入以下代码:[java] view plaincopyrepositories {      mavenCentral()  }  

2015-10-30 16:29:02 372

转载 Android实现网络多线程文件下载

实现原理(1)首先获得下载文件的长度,然后设置本地文件的长度。(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置。如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条线程开始下载的位置如下图所示:(网上找的图) 例如10M大小,使用3个线程来下载,线程下载的数据长度   (10%3 == 0 ? 10

2015-10-28 17:20:56 362

原创 git 代码管理命令

git log -2查看最近2次提交的日志git status查看状态git reset --hard HEAD~1 回退本地已经commit的最近一起提交git branch -r/-a 远程查看/本地查看git checkout 分支切换git add . 提交工作目录中的所有未删除文件到暂存区(包括新增文件和修改文件)g

2015-10-26 17:43:03 325

转载 导入classes.jar到项目

1.将Launcher2项目导入eclipse中。这时候Launcher2工程已经导入到eclipse中了,不过这时候会有100多个错误.2.添加Launcher2使用的包文件。由于在Android源码中,很多方法、成员、类、包都被打上@hide标签,这些成员在SDK中没有公开,以至于在编译Launcher源码时最常遇到的类android.view.View的成员mScro

2015-10-20 10:41:16 3048

原创 Android开发中立即停止AsyncTask和Thread的一些办法

程序开发中经常会有立即停止线程运行的需要,而通过api是没有办法实现这个目的的,因此对于这个情况,我们需要采取一些“特殊”的方式来实现:1,判断标志位的办法:我们要知道在java的线程中,没有办法停止一个正在运行中的线程。在Android的AsyncTask中也是一样的。如果必须要停止一个线程,我们可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doIn

2015-09-18 11:30:21 471

转载 ReentrantLock Condition 用法

我们要打印1到9这9个数字,由A线程先打印1,2,3,然后由B线程打印4,5,6,然后再由A线程打印7,8,9. 这道题有很多种解法,现在我们使用Condition来做这道题(使用Object的wait,notify方法的解法在这里)。package cn.outofmemory.locks;import java.util.concurrent.locks.Condition;impo

2015-09-17 19:48:24 488

转载 锁对象Lock-同步问题更完美的处理方式

Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plaincopyprint?

2015-09-17 19:46:49 337

转载 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。用1、2、2、3、4、5这六

private static String[] mustExistNumber = new String[] { "1", "2", "2",   "3", "4", "5" }; private static boolean isValidNumber(String str) {  // 检查是否包含12345这五个数,不包含返回false  for (String nu

2015-07-01 19:41:42 2211

转载 写一个算法实现在一个整数数组中,找出第二大的那个数字。

1. 写一个算法实现在一个整数数组中,找出第二大的那个数字。举例:int[ ] numbers = {1,3,5,0,6,9}; 输出:6int[ ] numbers2 = {0,3,7,1,12,9}; 输出:9int[ ] numbers = {66}; 输出:不存在int[ ] numbers = {66,66,66,66,66}; 输出:不存在pub

2015-06-30 19:27:33 1044

转载 随机产生20个字符串并且字符串不能重复 且进行排序

package com.test.kaoshi;     import java.util.HashSet;   import java.util.Iterator;   import java.util.Random;   import java.util.Set;   import java.util.TreeSet;     publi

2015-06-30 19:17:20 1750

volley api

项目中volly使用耦合较高,对其封装重构,便于移植

2015-11-19

新浪微博分享demo

新浪微博分享demo,使用于android客户端内容分享到新浪微博上去

2013-11-16

斗地主demo

不错的c++代码写的斗地主demo源码,想学习c++的朋友可以参考

2013-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除