自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 20210906 - 底层技术 - 注解与注解处理器

20210906 - 底层技术 - 注解与注解处理器注解语法/** * 注解,单独是没有意义的。如下是具体应用场景: * * 注解+APT: 用于生成一些java文件,如:butterknife, dagger2, hilt, databinding * 注解+代码埋点: AspactJ, ARouter * 注解+反射+动态代理: XUtils, Lifecycle */@Target({ElementType.FIELD, ElementType.METHOD})/

2021-11-05 18:51:58 1739

原创 20210705 - 架构 - IOC-Hilt实现原理

20210705 - 架构 - IOC-Hilt实现原理Hilt就是Android团队联系了Dagger2团队,一起开发出来的一个专门面向Android的依赖注入框架。相比于Dagger2,Hilt最明显的特征就是:1. 简单。2. 提供了Android专属的API。网络隔离层设计静态代理1、回调接口设计public interface ICallback { void onSuccess(String result); void onFailure(String e);

2021-11-05 18:50:18 1691

原创 20210703 - 架构 - IOC注入神器dagger2详解

IOC注入神器dagger2详解IOC(Inversion of Control)是原来由程序代码中主动获取的资源,转变由第三方获取并使原来的代码被动接收的方式,以达到解耦的效果,称为控制反转基本配置implementation 'com.google.dagger:dagger:2.4'annotationProcessor 'com.google.dagger:dagger-compiler:2.4'使用逻辑module: 用于提供对象component: 用于组织modu

2021-09-10 15:46:15 133

原创 20210702 - 架构 - IOC动态代理实现原理

动态代理1、生成代理类classpublic interface HelloInterface { void sayHello();}public static void main(String[] args) throws Exception { // 生成一个class二进制文件 byte[] bytes = ProxyGenerator.generateProxyClass("DavidHelloImpl", new Class[]{HelloInterface.c

2021-09-03 13:57:24 376

原创 源码分析Handler机制

Handler机制Message(消息) 消息的创建: 调用Message.obtain()方法,当sPool消息池为空就创建消息对象消息的next属性: 消息对象通过next属性指向下一个消息对象消息的when属性: long类型变量when,记录自己发送时间消息的target成员变量: 消息对象中有一个Handler类型的成员变量target这个target记录此消息对象是由

2017-05-03 16:02:44 373

转载 Xcode8 pod install 报错 “Generating Pods project Abort trap

今天在写一个新项目的时候,使用cocoapods在执行 $ pod install 的时候,终端提示 Generating Pods project Abort trap: 6解决办法:删除所有cocoapods gems,依次执行以下命令:sudo gem uninstall cocoapodssudo gem uninstall cocoapods-core

2017-03-21 18:01:10 350

原创 Markdown语法

#Markdown语法##链接网址链接:  联系方式:  资源链接: [github咖啡杯图片](./1_csndwata.jpg.png/ "快点开链接~")##图片###网络图片![猫咪](http://img5.imgtn.bdimg.com/it/u=652369314,4128174801&fm=21&gp=0.jpg "来自百度图片")

2016-11-22 14:42:15 357

原创 线程(Thread)

线程(Thread)线程创建方式:方式一:继承Thread自定义一个类继承Thread类。重写Thread的run方法,把自定义线程的任务代码定义在run方法上。创建Thread子类的对象,并且调用start方法启动一个线程。class MyThread extends Thread { String data; public MyThread(String data) {

2016-11-19 19:17:08 312

原创 输入输出流(IO)

输入输出流(IO)字节流InputStream,所有输入字节流的基类,抽象类 FileInputStream,读取文件的输入字节流BUfferedInputStream,缓冲输入字节流,该类内部维护了一个 8kb 的字节数组,该类的出现是为了提高读取数据的效率OutputStream,所有输出字节流的基类,抽象类 FileOutputStream,向文件输出字节数据BufferedOut

2016-11-18 11:17:03 244

原创 泛型(genericity)

范型自定义范型方法自定义范型方法格式:修饰符 <声明自定义泛型>返回值类型 函数名(形参列表..){}注意事项:自定义范型方法的数据类型是在调用该方法时传入实参时确定的自定义范型使用的标识符 例子: //需求:定义一个函数,实现可以接受任意类型的行参,要求返回类型与实参类型保持一致public class Demo { public static void main(Stri

2016-11-17 14:34:02 352

原创 集合

集合集合API简介collection接口 List接口。特点:有序,可重复 ArrayList类,Object数组实现的。特点:查询快,增删慢LinkList类,链表数据结构实现的。特点:查询慢,增删快Vector类,Object数组实现的。特点:查询快,增删慢,线程安全的,操作效率低Set接口。特点:无序,不可重复。Set.iterator()遍历 HashSet类,哈希表实现。特

2016-11-16 17:59:59 322

转载 iOS10.0自带的刷新控件UIRefreshControl简介

iOS10.0自带的刷新控件UIRefreshControl简介 @available(iOS 10.0, *)open var refreshControl: UIRefreshControl?– class ViewController: UIViewController { var scrollView: UIScrollView? override func view

2016-11-15 15:23:15 529

原创 CocoaPods安装

CocoaPods安装安装参考: http:\/\/blog.csdn.net\/showhilllee\/article\/details\/38398119 http:\/\/blog.csdn.net\/gf771115\/article\/details\/50540398 http:\/\/www.cnblogs.com\/yan520\/p\/5583362.ht

2016-10-27 14:00:29 303

原创 property介绍

property介绍对象用strong(强指针)或者weak(弱指针)数据类型用assign(基本)或者copy(NSString)MRC环境下: 属性 说明 atomic 原子性,对线程加锁,性能低,安全性高 nonatomic 非原子性,不对线程加锁,性能高,低安全性 retain 用于对象类型(帮生成set方法的内存管理) assign 用于数据基本类型

2016-08-11 11:03:43 265

转载 栈,堆,静态区

参考: http://blog.csdn.net/chenke1988/article/details/7273375一个由C/C++编译的程序占用的内存分为以下几个部分 :栈(stack) 由编译器自动分配和释放, 存放局部变量, 函数参数堆(heap) 一般由程序员分配和释放, 若程序员没有释放, 程序结束时可能由OS回收静态区(static)/全局区 存储全局变量, 静态变量.

2016-05-03 10:46:10 299

原创 Android apk 混淆,加密,加壳 介绍

Android apk 混淆/加密/加壳 介绍360加固服务: http://jiagu.360.cn/加壳介绍: http://blog.csdn.net/androidsecurity/article/details/8678399

2016-03-25 11:20:32 1236

转载 SDK 里的各项内容说明

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-03-23 14:06:34 565

转载 查找和排序

查找和排序折半查找//折半查找法1(String--compareTo方法)public static int halfSearch(List<String> list, String key) { int max, min, mid; max = list.size() - 1; max = list.size() - 1; min = 0; while (

2016-03-21 17:03:28 267

原创 重写重载 & 继承 & 封装

重写重载 & 继承 & 封装重写, 重载什么是 重写/覆盖: 当子类出现和父类一模一样的函数时, 当子类对象调用该函数,会运行子类函数的内容。 如同父类的函数被覆盖一样。 当子类继承父类,沿袭了父类的功能,到子类中, 但是子类虽具备该功能,但是功能的内容却和父类不一致, 这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。重写

2016-03-21 16:03:28 399

原创 多态

多态概念1.多态的体现 父类的引用指向了自己的子类对象。 父类的引用也可以接收自己的子类对象。2.多态的前提 必须是类与类之间有关系。要么继承,要么实现。 通常还有一个前提:存在覆盖。3.多态的好处 多态的出现大大的提高程序的扩展性。4.多态的弊端: 虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。多态:1.多态的概念发展出来,是以封装和继

2016-03-21 16:02:23 485

原创 AS快捷键 & AS不需要提交的文件

Android Studio快捷键Ctrl + Y: 删除一行Alt + Enter: 代码提示选中一个类, Ctrl + H: 查看实现该类的子类ctrl + p: 提示函数所需的参数shift + F6: 文件重命名ctrl + alt + shift + L: 格式化代码待完成代码: // TODO:ctrl + D: 复制一行代码ctrl + shift + 上/下: 移

2016-03-18 16:37:46 603

转载 时间复杂度

时间复杂度来自: http://baike.baidu.com/link?url=Tq2j4Msh3KhOwQ7dBiS49aBStSNIHMqJod_2aO8-Kuk9LyVVLDP2GwIYybkopXjwo_qf3QS4nJ4gKHwSoANlmq一个算法的评价主要从 “时间复杂度” 和 “空间复杂度” 来考虑。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n) 在计算时间复杂

2016-03-14 17:24:54 318

原创 常用的设计模式

Command设计模式: 控件和代码低耦合的设计思路, 安卓中常见适配器设计模式: 一个控件根据需求使用不同的适配器, 安卓中常见观察者设计模式: java API提供的 observable 和 observer单例设计模式模板设计模式

2016-03-01 00:47:29 328

原创 常用的ADB命令

ADB (Android Debug Bridge) adb version -- 查看adb版本adb -- 查看帮助adb devices -- 查看当前已连接的设备adb start-server -- 开启adb服务add kill-server -- 杀死add服务adb shell -- 进入Android控制台, 执行Linux命令

2016-03-01 00:09:36 512

原创 消除app启动时的闪烁效果

消除app启动时的闪烁效果问题描述:使用 APP 的时候会在应用启动的初始有一个黑屏闪过后才会出现应用的欢迎页解决办法:为 LancherActivity 配置透明主题 android:theme=”@android:style/Theme.Translucent”进入 app 先跳转 LancherActivity 通过 LancherActivity 再跳转到 MainActivity其他

2016-02-04 16:31:11 803

原创 adb命令查看app内存占用信息

dumpsys meminfo 包名

2016-02-03 14:40:32 3804

转载 android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决

原文链接: http://blog.csdn.net/dreamer0924/article/details/34082687?utm_source=tuicool&utm_medium=referralActivity has leaked window android.widget.ZoomButtonsController that was originally adde

2016-02-02 18:00:20 261

转载 WebView内存泄漏

转载来自: http://my.oschina.net/zhibuji/blog/100580在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任

2016-02-02 13:39:00 423

原创 Service (aidl远程服务)

Service (aidl远程服务) game工程调用game工程的pay服务alpay工程支付的服务public class PayService extends Service { @Override public IBinder onBind(Intent intent) { AiPay aiPay = new AiPay(); return

2016-01-28 16:35:43 290

原创 Service (在Service中注册BroadcastReceiver)

Service (在Service中注册BroadcastReceiver)注册广播接收者的服务类public class MyService extends Service { private ScreenReceiver receiver; @Override public IBinder onBind(Intent intent) { return null

2016-01-28 11:05:39 2447

原创 Service (bindService音乐播放器)

Service (bindService音乐播放器)音乐服务public class MusicService extends Service { @Override public IBinder onBind(Intent intent) { return new MusicController(); } /** * Binder是IBinde

2016-01-28 10:55:15 609

原创 Service基础

Service基础Servie方法onCreate: 创建服务 (第一次 startService的时候调用)onStart: 开启服务 (过时的方法, 新方法是 onStartCommand)onStartCommand: 开启服务 (每次 startService的时候都调用)onDestroy: 销毁服务 (只有先 startService再 stopService才会调用 onDestroy

2016-01-28 10:13:55 257

原创 WebView相关

WebView相关WebView的后退 方式一@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (mWebView

2016-01-27 09:17:27 388

原创 webview和js交互

webview和js交互js调webview// js调webview// window.android_product_detail.openBulletin();// window.android_product_detail.modifyTitle('产品要素');mWebView.addJavascriptInterface(new JSWebView(), "android_prod

2016-01-26 17:34:50 699

原创 模版设计模式

模版设计模式什么是模版方法呢?在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分, 那么这时就将不确定的部分暴露出去。由该类的子类去完成。例子:/** * 模版设计模式: * * 获取 runCode()的运行时间 */public class mobanTest extends GetTime { public static void ma

2016-01-26 10:51:56 284

转载 代码分析工具 findBugs

原文链接: http://blog.csdn.net/gaofuqi/article/details/22679609FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为Eclips

2016-01-26 10:50:58 310

原创 两个ArrayList<String>() 的并集,交集,差集

List list1 = new ArrayList(); list1.add("1111"); list1.add("2222"); list1.add("3333"); List list2 = new ArrayList(); list2.add("3333"); list2.add("4444"); list2.add("5555"); // 并集

2016-01-13 14:55:05 690

转载 ContentProvider批量导入及事务处理

来源: http://my.oschina.net/laiwanshan/blog/1000931.在ContentProvider类中重写bulkInsert方法,并将其写在一个事务里。 @Override public int bulkInsert(Uri uri, ContentValues[] values) { int numValues = 0;

2016-01-13 14:47:19 1180

转载 防止onclick事件多次调用

问题onClick事件是Android开发中最常见的事件。比如,一个submitButton,功能是点击之后会提交一个订单, 则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 : //代码0 submitButton.setOnClickListener(new OnClickListener() { @

2016-01-12 15:29:26 3017

转载 App的运行内存占用问题

如何优化app的运行内存占用来自: http://zhidao.baidu.com/link?url=yJcZTThat8DGe_JYrMs57zsEkvIG3Yh2_4Ui5r3_7764FpFB3ACCJ3Xs_gacS7K1D2j-9CVwkgepV3kWZu2ucRUjzru7SsrqaoP4kbK0pFy一、尽量减少Service的使用:当

2016-01-12 11:08:21 1693

空空如也

空空如也

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

TA关注的人

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