- 博客(74)
- 资源 (1)
- 收藏
- 关注
原创 [Android优化]跟内存泄漏说再见
饥饿让人充满智慧说到内存泄漏导致OOM(out of memory·)很多人都觉得和自己的应用遥不可及,现在市场上开始出现6G RAM,8 GRAM内存泄漏那么一点点又怎样?其每台android机在出厂时就已经配置了单个APP内存的最大可用内存,所以6G甚至8GRAM 除了分配的自留地,其他都是公家地盘,你并不能利用起来,我们可以通过adb命令来查看当前设备配置的可用内存大小//当配置了heapg
2017-10-22 02:45:00
846
原创 [设计模式]职责链模式
开始写设计模式系列,希望自己可以坚持下来. 第七篇:职责链模式什么是职责链模式关于职责链模式GOF是这样定义的:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间额耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。简易实现Talk is cheap,我们来看下最为简易的职责链实现。 抽象的处理者:package top.huyuxin.Chainof
2017-09-24 18:46:01
732
转载 [Android优化]使用SparseArray和ArrayMap代替HashMap
在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。介绍它
2017-09-18 00:24:33
845
原创 [设计模式]状态模式
开始写设计模式系列,希望自己可以坚持下来. 第六篇:状态模式什么是状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。很多人都会疑问状态模式和策略模式的区别在哪?实际上状态模式和策略模式很相似,甚至他们的UML图都是一致的,那么他们的区别在哪呢?我们再来回想下策略模式,策略模式:创建一个策略的抽象,在这个接口声明算法函数,创建不同的策略实现类来实现算法,在C
2017-09-17 13:11:07
561
原创 JAVA多线程(一)
突然整理这篇博客是同事碰到个多线程的问题,问我可我没回答上来。java多线程是面试必问,也是一个讲不完的话题,下面是一些我整理的知识点。加油!进程与线程进程和线程都是系统的调度单位,但是相对于进程,线程则是系统调度的最小单位。对于一个程序来说,一个程序存在一个进程,但是可以存在多个线程,当进程结束,那么依赖他的线程也将全部结束。反之则不然。线程的创建在java中创建线程的方式主要有三种,先讲常用的
2017-09-06 00:11:14
794
转载 匿名内部类
在java提高篇—–详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客。在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final。一、使用匿名内部类内部类匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下:new 父类构造器(参数列表)|实现接口() {
2017-08-31 10:54:04
820
原创 [设计模式]策略模式
开始写设计模式系列,希望自己可以坚持下来. 第五篇:策略模式 什么是策略模式 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式还是很简单的就不写了,转载一篇很不错的^_^策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派
2017-08-30 23:31:55
487
原创 [设计模式]工厂模式
我们通常使用new来创建一个新的对象,但是也随之带来一系列问题,比如,许多复杂对象的创建需要一定的步骤,在创建对象的时候需要依赖别的对象,直接在ClassA 中创建ClassB的对象,那么代码的耦合强太高。什么是工厂模式工厂模式分为:简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂模式那他们三有什么区别呢?简单工厂模式: 一个抽象产品类,可以派生出多个具体产品类。 一个工厂类。
2017-08-24 01:04:34
424
原创 [设计模式]原型模式
开始写设计模式系列,希望自己可以坚持下来. 第三篇:原型模式什么是原型模式定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.原型模式顾名思义也就是说是有一个样板的,以这个样板为原型.开发者从这个样板对象中复制出一个内部属性一致的对象.原型模式多用于创建复杂的或者构造耗时的对象,因此使用原型模式可以使得应用程序运行更加的高效.经典模式我们在说原型模式时先简易的实现一下原型模
2017-08-22 17:20:21
419
原创 [设计模式]建造者模式
开始写设计模式系列,希望自己可以坚持下来. 第二篇:建造者模式什么是建造者模式建造者模式是一步一步创建一个复杂对象,允许用户不了解细节的情况下精细的控制对象的构造过程。使得复杂对象的构建与他的表示相分离,同样的构造过程可以创建不同的表示。经典模式在生活中我们经常买票,各种各样的票,我们这里要创建一个可以售卖多种票的程序。 首先是产品Product,他是一个抽象类,他有各种票都有的特征,以
2017-08-17 00:23:05
504
原创 [设计模式]单例模式
开始写设计模式系列,希望自己可以坚持下来. 第一篇:单例模式单例模式是大家最为熟悉的设计模式也是大多数程序员接触的第一种设计模式,但是要真的去全面了解一波单例模式还是要点时间.什么是单例:确保某一个类在全局只有一个实例,最为常见的的场景就是全局变量以及全局的工具类,重复创建带来资源与性能的浪费.那么创建单例模式需要注意什么呢?重写构造函数并声明为私有(private);通过静态方法或者枚
2017-08-14 18:02:24
484
原创 Apk源码的加固(加壳)原理解析和实现
好久没写博客了,要深刻检讨下!前言: 在Android中没有经过加密的Apk给人的感觉就是在裸奔,通过apktool,dex2jar,AndroidKill等各式各样的反编译工具就可以轻松的获取其smail代码,如这个叫SourceProject的helloworld程序被apktool反编译后,对于懂smail语法的逆向工程师来说就一览无余了。破解与反破解是相对的,所以我们尽可能的给自己的Apk
2017-06-19 00:30:43
8167
5
原创 MVP的认识
为何MVP模式能在Android开发中大放异彩,我觉得很大一部分原因来源与传统的model-view的开发模式使得everything is connected with Activity。MVP开发模式使一部分的业务逻辑从Activity中抽取出来。那MVP是怎样的呢? 我们先理清M(model)V(view)P(presenter)他们各自的职责V(view)界面层:负责与用户交互展示数据
2017-06-04 15:28:35
1037
转载 C# 中的委托和事件
原文地址:C# 中的委托和事件引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framewo
2017-03-30 20:33:19
467
原创 [设计模式]接口代理实现Application的多继承
在工作中碰到一个场景,就是你APP的Application是需要继承自家的Application,但是你在接入别人的SDK时,有的sdk接入要求你的Application继承他家的Application,这就比较尴尬了.Java只能单继承这可怎么是好? 接口代理就可以用上了. 首先我们让清单文件声明的Multiapplication继承代理类ProxyApplication,通过super.的方
2017-03-29 11:50:26
1902
1
原创 [读书笔记]被人熟知的Activity
好久没写博客了,最近找了份实习,各种事情乱七八杂,但是没写就是没写不能为自己找借口! 今天2017年2月20日,在这立个flag,接下来每星期至少写一篇博客!工作笔记,读书笔记,不想成为工程师的码农不是好的程序员!正文:生命周期说到activity大家肯定都生命周期背的66的,那我们还是从生命周期讲开始,后面涉及一些要注意或则容易忽略的问题. activity常见的生命周期:onCreate
2017-02-20 23:37:21
919
转载 [设计模式]代理模式在android中的使用
假如,我们现在要在每次启动一个activity之前都要打印一条信息。 最笨的方式就是用一个BaseActivity集成Activity,但是,如果我们这个项目已经进行了N多年,想象一下,这得修改多少源码,且这破坏了我们的设计原则,我们尽量扩展而不是修改代码。那些已有的代码都是经历时间考验的,修改之后可靠性会下降。 当我们启动一个Activity的时候,肯定都会调用startActivity**
2017-01-22 19:01:09
932
转载 Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
在Android中我们经常会用到ViewPager+Fragment组合。然而,有一个很让人头疼的问题就是,我们去加载数据的时候由于ViewPager的内部机制所限制,所以它会默认至少预加载一个。这让人很郁闷,所以,我就想到要封装一个Fragment来解决这个问题。 这里还解决一个问题就是在Android酷炫欢迎页播放视频,仿蚂蜂窝自由行和慕课网 这里感谢有一位网友提出了bug,就是在
2017-01-20 15:18:25
800
原创 Android Studio发布library到jCenter(问题集合)
烦心简单的事情折腾一天了,现在将碰到的问题集中写下,方便以后查询 试过两种方法gradle-bintray-plugin插件 有点麻烦,不过能用 ,推荐篇文章:在AndroidStudio中,使用Gradle打包aar到JCenter仓库!完整版教程!填补各种坑bintray-release插件 还不错,推荐篇郭神的文章: Android 快速发布开源项目到jcenter下面说下碰到的问
2016-12-07 11:49:34
1804
原创 网站域名的相互绑定
在当你拥有一个网站时,你肯定想过自己买个属于自己的域名解析到当前的网站,这样不管是自己还是别人都更容易记住,下面就以Github的博客网站域名与一个自己购买的域名相互绑定为例在Github上绑定自定义域名 先来到你Github博客的库,进入Settings 来到Stttings下的Github pages下修改你自己的域名(默认没有修改是你的仓库名,如:/huyuxin95.github.
2016-11-30 21:31:14
1645
转载 Android 使用极光推送自定义消息打造个性的消息推送效果
极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。本案例将实现如图效果: 参考官方Android SDK 教程完成激光推送的基本配置区别通知和自定义消息 通知即指在手机的通知栏(状态栏)上会显示的一条通知信息。 自定义消息是极光推送自己的概念。 自定义消息不是通知,所以不会被SD
2016-11-18 21:34:05
3306
原创 一个好用的全局异常捕获器
好久没写博客了,拿着个凑个数吧,这是一个全局异常捕获器,可以直接shotdown程序也可以再次重启程序,会将错误信息生成文件,方便上传至服务器,上传操作没有做,复制就能用!package com.jju.yuxin.cinews.utils;import android.content.Context;import android.content.Intent;import android.co
2016-11-18 20:24:50
559
转载 Android中保存和恢复Fragment状态的最好方法
英文原文:Probably be the best way (?) to save/restore Android Fragment’s state so far经过这几年使用Fragment之后,我想说,Fragment的确是一种充满智慧的设计,但是使用Fragment时有太多需要我们逐一解决的问题,尤其是在处理数据保持的时候。首先,虽然其有类似于activity的onSaveInstan
2016-11-05 20:04:50
1562
转载 深度理解依赖注入(Dependence Injection)
前面的话:提到依赖注入,大家都会想到老马(Michael Mattson)那篇经典的文章。其实,本文就是相当于对那篇文章的解读。所以,如果您对原文已经有了非常深刻的理解,完全不需要再看此文;但是,如果您和笔者一样,以前曾经看过,似乎看懂了,但似乎又没抓到什么要领,不妨看看笔者这个解读,也许对您理解原文有一定帮助。1.依赖在哪里 老马举了一个小例子,是开发一个电影列举器(MovieList),
2016-10-31 19:30:11
2462
转载 Android中的定时器AlarmManager
在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,常用方法有五个:(1)set(int type,long startTime,
2016-10-12 21:19:58
676
原创 Android Studio下导入百度地图Demo
首先你需要下载百度地图的Demo,解压出来是这样的结构,下面我们以BaiduMap_AndroidSDK_v4.0.0_Sample这个demo为例,1.修改配置文件因为每个人的gradle版本,以及sdk版本都不一定相同,我们需要来到项目修改下列文件的配置信息 BaiduMap_AndroidSDK_v4.0.0_Sample\BaiduMapsApiASDemo目录下 修改gradle版
2016-10-10 19:36:23
8066
原创 Android Stuido下NDK的简单实现
本文参考我同学的博文实现,有不清楚的地方,可以去他那看看. 在android studio 2.1 实现简单的ndkJNI是Sun公司定义的一套编程框架标准接口,允许Java代码和本地代码的相互调用. 我们什么情况下会使用JNI技术呢?需要注重处理速度直接进行硬件控制对已有的本地代码进行复用 -加载动态链接库我们通常接入别人sdk的时候都是使用的这种方法,比如接入新浪的SDK我们
2016-10-05 14:58:36
1572
原创 C++基础知识汇总
C++?++C?这是一个问题,国庆第四天,闲来无事,一直想看下C++,白天有空看了一下,晚上来整梳理一番. - Hello,C++# include<iostream> //引入头文件using namespace std;//使用名称空间, int main(){ //输出语句 std是C++封装了的类 ::表示调用类里面的静态函数或属性 cout输出函数 //std:
2016-10-04 22:37:19
1226
原创 android中.9图的编辑
.9图也叫作自动拉伸位图.因为图片的后缀是.9.png所以也就称作.9图了,在很多的应用场景中我们都会用到.9图,比如QQ的聊天气泡,QQ发送的红包图片,等等他们都能够很好的适应内容的大小显示图片,并保证放大后的图片不失真,在sdk/tools下的draw9patch.bat可以编辑.9图,在Android Studio中也自带.9图的编辑功能,接下来我们就使用Androidstudio 自带的.9
2016-10-03 23:50:33
2013
原创 C语言基础知识汇总
隔了好久好久没有看C了,近日国庆有空,整理下以前的C语言知识点 - Hello,C#include<stdio.h>//类似于java import 引入头文件 int main() { printf("Hello,C\n");//输入语句// system("pause");//暂停 让cmd窗口不消失return 0;}第一个没啥好讲的,include类似JAVA的im
2016-10-03 19:58:37
2664
原创 [读书笔记]布局的屏幕适配常用方法
因为android的开放,android碎片已经无比严重了,在android中使用的又是pd,px,sp等单位,不像web一样使用百分比计算,现在app只兼容一种分辨率几乎没有 那这么多的分辨率我们怎样来适配呢?下面是我了解了的几种常用方法:尺寸限定符 在res文件夹下建立不同分辨率的layout文件夹如layout-layge,layout-sw600dp (sw600dp表示设备最小
2016-10-01 22:08:44
651
原创 [读书笔记]weight知多少
在LinearLayout(线性布局)中有个weight(权重)属性是大家经常用到的,下面有三种weight的使用场景,你能清楚的分辨控件各自所占的百分比吗?场景一: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" a
2016-10-01 13:50:59
864
原创 README(MobileSafer)
MobileSafer地址:git@github.com:huyuxin95/MobileSafer.git 手机安全卫士,主要分九个模块”手机防盗”,”通讯卫士”,”软件管理”,”进程管理”,”流量管理”,”手机杀毒”,”缓存清理”,”高级工具”,”设置中心”下面是各个模块的介绍:启动界面 主要在这个actiity做了版本验证操作,连接服务器端口,获取版本号,与当前应用版本号进行比较,判断是
2016-09-28 15:39:43
673
原创 [读书笔记]监听事件的四种方式原理分析(接口回调)与比较
方式一:在布局文件的控件上设置onClick属性布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
2016-09-21 13:41:22
3019
转载 Android IntentService完全解析 当Service遇到Handler
一 概述大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能会被杀死,所以可以考虑将上传操作交给Service去做,如果担心Service被杀,还能通过设置startForeground(int, Notification)方法提升其优先级。那么,在Service
2016-09-20 22:46:23
514
转载 Java 多线程之 Runnable VS Thread 及其资源共享问题
对于 Java 多线程编程中的 implements Runnable 与 extends Thread,部分同学可能会比较疑惑,它们之间究竟有啥区别和联系呢?他们是不是没啥区别随便选呢?实际中究竟该选择哪一个呢?甚至网上不少博客文章以讹传讹得出不少谬论,那今天的走进科学栏目将带您一一揭开谜底。1、区别:其实这块主要是围绕着接口和抽象类的区别以及一些设计原则而言的。1.1 Inheritance O
2016-09-20 21:07:27
1013
原创 [读书笔记]intent.putExtra的使用与原理分析
在android中用intent传递数据是非常常见的操作,我们一般会用intent.putExtra()这个方法来放入自己要传递的数据,然后再另一个地方使用getxxx()来获取,其中intent.putExtra()的传参类型有很多种:Intent putExtra(String name, String[] value)Intent putExtra(String name, Parcel
2016-09-19 00:16:01
34212
1
转载 ListView中getView()的原理
ListView 和 Adapter 的基础工作原理:ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。 一个新的视图被返回并显示 如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能!实际上Android为你缓存了视图。Android中有个叫做Recycler的构件,下图是他的工作原理: 如果你有10亿个项目(i
2016-09-14 17:05:02
5755
转载 Android ListView的OnItemClickListener()参数详解
我们在使用ListView的时候,一般都会为ListView添加一个响应事件Android.widget.AdapterView.OnItemClickListener。本文主要在于对OnItemClickListener的position和id参数做详细的解释,我相信有些人在这上面走了些弯路。 先来看一下官方的文档position The position of the view in the
2016-09-14 09:28:25
2876
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人