- 博客(262)
- 资源 (27)
- 收藏
- 关注
原创 设计模式小结一工厂模式
在工厂模式中,我们创建一个工厂类,该类负责实例化具有共同接口或基类的对象,而无需在代码中直接指定要实例化的具体类。工厂模式有多种变体,最常见的有三种:简单工厂模式(Simple Factory Pattern)、工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)。笔者记得大学里编程接触到的第一个设计模式就是工厂模式,现在回过头来看,那时接触的应该叫简单工厂模式,工厂模式还包括:工厂方法模式、抽象工厂模式。,我们可以使用一个工厂类。
2024-11-06 18:10:20
1214
原创 设计模式小结一装饰者模式
先上结论:这也是一个Android客户端开发中经常使用到的一个设计模式,最典型的就是Android源代码中你最常见到的上下文,也是采用的装饰者模式。废话不多说,开干简单总结下装饰者模式的定义:动态地给一个对象添加一些额外的职责,就扩展功能而言,装饰者模式提供了一种比使用子类更加灵活的替代方案。
2024-11-06 17:46:13
860
原创 一篇文章帮你彻底解决gradle、gradle插件、jdk版本兼容性问题
但是,这几部分它又是分开升级的,久而久之,就出现了你的开发环境,和导入的项目,在这几个部分之间出现了版本兼容性问题,然后,当你将一个别人开发的,或者很久以前的一个项目导入进来的时候,就会出现各种让你抓狂的编译报红,主要是它不好解决。其次,若上面说的版本兼容性已经没问题了,还报一些groove的语法错误,如果不能简单处理就解决掉,建议将AS的版本换成跟你导入的项目能正常运行所在的版本一致,不要过多的浪费时间。重点来了,不要急,把这几大组件的版本对应关系搞对了,问题自然迎刃而解了。
2024-11-05 17:08:58
2090
1
原创 设计模式小结一观察者(Observer)模式
观察者模式又称为模型-视图(Model-View)模式、源-收听者(Listener)模式或从属者模式。在此种模式中,一个目标对象(被观察者)管理所有相依于它的观察者对象,并在其状态改变时主动发出通知。这通常通过调用各观察者所提供的方法来实现。Observer2. 定义被观察者接口Subject// 添加观察者// 移除观察者// 通知所有观察者// 改变状态并通知观察者3. 创建具体观察者类@Override4. 测试观察者模式// 注册观察者。
2024-11-05 09:18:48
1114
原创 设计模式小结一策略(strategy)模式
定义一个策略接口,包含一个计算折扣价格的方法。// 折扣策略接口创建类,用于设置折扣策略,并计算折扣后的价格。// 设置折扣策略// 计算折扣价格throw new IllegalStateException("折扣策略未设置");
2024-11-04 17:30:00
1337
原创 彻底理解cookie、session、token
Cookie、Session和Token是前端开发中常用的用户会话管理技术。Cookie存储客户端,Session存储服务器端,Token作为客户端请求令牌。三者各有优劣,适用于不同场景,需根据需求选择合适技术保障安全性和稳定性。
2024-11-04 09:24:39
671
原创 Android中的Handle底层原理
静态内部类则不会持有外部类的引用,Handler对象隐性地持有了Activity的对象,当发生GC是因为 message – handler – acitivity 的引用链导致Activity无法被回收,所以发生了内存泄露的问题。2)、一个Thread只有一个Looper,Looper.prepare()即是建立当前线程、消息队列和Looper的对应关系。2)创建handler对象时,会调用Looper.myLooper()方法,从handler所在线程中获取1中创建的。
2024-11-03 08:00:00
561
原创 Android中的跨进程通信方案总结一-AIDL的使用
首先,创建一个.aidl文件,用于定义跨进程的接口。在这个示例中,我们创建一个叫的文件。
2024-11-02 07:30:00
1191
原创 Android中的跨进程通信方案总结一-AIDL运行原理
开发者首先通过.aidl文件定义服务接口和方法,这些方法允许客户端调用。在编译时,Android 编译器会自动生成相应的Stub和Proxy类。Stub(服务端实现):服务端使用的 Binder 对象实现了 AIDL 接口方法,实际调用发生在这里。Proxy(客户端调用代理):在客户端调用时,代理类会将方法调用封装成 IPC 请求,通过 Binder 通道传输到服务端。首先定义一个.aidl文件,它描述了服务接口和可以跨进程调用的方法。假设我们希望创建一个计算服务,包含一个add方法来实现加法运算。
2024-11-02 06:30:00
943
原创 Android程序开发中的异常捕获方案
Override// 自定义处理,例如将日志写入文件// 调用系统默认异常处理器= null) {// 写入文件逻辑在中设置,即可捕获全局异常并记录。局部异常捕获try-catch,适用于局部代码块的异常处理。全局异常捕获,适用于整个应用的异常捕获。协程异常处理,用于捕获 Kotlin 协程中的异常。NDK 层捕获sigaction设置信号处理,用于 native 层崩溃捕获。第三方工具。
2024-11-01 18:30:00
1042
原创 seccomp的原理及使用
先上结论:当前,逆向与反逆向技术已经卷的不能再卷了,矛与盾的攻防永远不会有结论。常规的libc库函数的hook方案,在程序逆向破解过程中的帮助已经越来越弱,而如果你深入研究了seccomp技术,也许能为你的逆向破解之路增添不小的帮助。seccomp的原理主要基于内核中的,尤其是,通过为进程设置一个系统调用的白名单或黑名单,达到限制其操作系统交互的目的。
2024-11-01 07:30:00
1006
原创 程序开发中的加解密技术
先上结论:如何对一个文件在程序开发中进行快速加解密,以求尽量减少对程序运行性能造成影响?笔者尝试了众多常用的加解密技术,综合比较选定了AES方案,用AES对一个传输过来的2MB左右的加密文件进行解密,在大多数手机上运行,时间消耗在毫秒级。开干:在程序开发中,常用的加解密技术主要分为对称加密、非对称加密和散列(哈希)算法等。每种加解密方式都有不同的应用场景。
2024-10-31 20:29:57
1435
原创 java hook的核心-动态代理
Java动态代理是Java中一种强大的特性,它允许在运行时动态地创建代理类和代理对象,而无需在编译时确定代理类的具体类型。1)Proxy类:Proxy是Java提供的用于创建代理类的工具类。3)当调用代理对象的方法时,实际上是调用了InvocationHandler接口中的invoke方法,在该方法中执行具体的代理逻辑,包括调用真实对象的方法。1)创建一个实现了InvocationHandler接口的类,该类将包含对代理对象方法的具体处理逻辑。Class[]:代理类需要实现的接口列表。
2024-10-31 09:01:53
264
原创 Java中线程池的使用技巧(一)
先上结论:使用过Java语言的开发者,如果不懂得如何正确的使用线程池,那他一定不是一个好的程序员,是一定!开干!1、ThreadPoolExecutor原理`ThreadPoolExecutor`是Java中用于管理线程池的类。它是`ExecutorService`接口的一个实现,提供了灵活的线程池管理功能。1)线程池初始化:在创建`ThreadPoolExecutor`实例时,您需要指定核心线程数、最大线程数、线程空闲时间、工作队列等参数。这些参数决定了线程池的大小和行为。2) 线
2024-10-30 09:24:10
696
转载 linphone快速挂断后的程序崩溃问题
转载自:http://blog.youkuaiyun.com/firstime_tzjz/article/details/7838443 第一种情况:第一步:主叫拨通电话后快速挂断,此时尚未收到服务器对 INVITE 的临时响应消息,因此主叫在调用 eXosip_call_terminate 函数时并不发送 cancel 消息,则通话过程实际并没有结束。第二步:主叫在挂断后状态进入 Lin
2016-03-28 20:49:52
2298
1
原创 SIP协议研究浅析
SIP:1、定义session initiation protocol,SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议)例如Internet 电话。SIP也可以邀请参与者参加已经存在的会话,比如多方会议。媒体可以在一个已经存在的会话中方便的增加(或者删除)2、作用 1. 用户定位: 检查终端用户的位置,用于通讯。 2. 用户有效性:检
2016-03-16 16:35:26
1201
转载 Android WebView常见问题及解决方案汇总 .
转载自:http://blog.youkuaiyun.com/t12x3456/article/details/13769731/ [-]WebView cookies清理判断WebView是否已经滚动到页面底端如有转载,请声明出处: 时之沙: http://blog.youkuaiyun.com/t12x3456Android WebView常见问题解决方案汇总:就目前而
2015-06-03 11:04:48
3085
原创 As of ADT 14, resource fields cannot be used as switch
13down voteFor all of those who didn't resolve this problem yet - this is what i`v done:Go to your "project.properties" file.Delete this line " android.library=true"The reason why i
2015-04-21 23:21:10
1445
原创 如何默认勾选DATA ROAMING
[DESCRIPTION] 如果客户想默认打开数据漫游开关,即默认勾选DATA ROAMING,则可以按如下方式客制化即可。 注意:数据漫游打开后,可能会产生高额的漫遊费用,故目前默认的设置都是将数据漫游关闭。 [SOLUTION] 方法1:1: 修改文件:alps\mediatek\config\贵司对应项目\system.
2015-04-13 17:50:11
5918
原创 动态改变任意区域读写权限
最近遇到客户一个比较苛刻的需求,要求动态改变外置T卡的读写权限,然后接下来的几天就各种尝试,各种失败到了放弃的前0.0001秒时突然灵光一现,终于在周五快下班的时候搞出来了,可以回家过个安心周末了!记录一下整个开发过程,留作以后备忘。有了以下代码,以后想动态改变任意区域的读写权限将变得相当容易! try{ execCommand(new Str
2015-01-23 20:32:39
1356
原创 如何修改单卡和双卡工程的默认数据连接开关
[SOLUTION]单卡项目: 数据连接都是由\alps\mediatek\config\工程名\ProjectConfig.mk下的MTK_DEFAULT_DATA_OFF这个属性来控制。 若MTK_DEFAULT_DATA_OFF=yes,则默认关闭. 同理,若设置成no就是默认打开。KK版本: 请修改DefaultDataSimSetting.ja
2015-01-20 20:45:03
3685
1
转载 Android牛逼开源项目分类汇总 .
[+]第一部分 个性化控件View一ListView二ActionBar三Menu四ViewPager Gallery五GridView六ImageView七ProgressBar八TextView九ScrollView十TimeView十一TipView十二FlipView十三ColorPickView十四GraphView十五UI Style十六其他第二部分 工具库
2015-01-20 02:23:37
3706
原创 将apk编译到指定目录
编译到data/app:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_PREBUILT_PACKAGE := $(LOCAL_PATH)/SogouInput.apkLOCAL_PACKAGE_NAME := SogouInputLOCAL_CER
2015-01-08 10:02:52
1837
原创 linux中将测试用C文件编译成bin供开发人员快速测试用操作方法
1、Android.mk写法:LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= pn547_iic_test_app.c LOCAL_MODULE:= pn547_test LOCAL_MODULE_TAGS := optional include $(BUI
2015-01-08 09:40:49
3041
原创 获取mac地址并以十六进制格式加冒号分隔显示
unsigned char* getMacAddr(){ char output[wifi_length] = {0}; int rec_size = 0; int rec_num = 0; unsigned char w_wifi[wifi_length]; unsigned char* macAddr; int ret, leng
2015-01-08 09:34:25
6215
转载 “USB连接方式”设置界面 (MTP,PTP,UMS)
转载自:http://blog.youkuaiyun.com/rodney443220/article/details/10542091目录(?)[+]“USB连接方式”设置界面选择MTP,PTP,UMS的选项界面就定义在UsbSettings.java,选择其中一个选项时会执行以下代码。packages/apps/Settings/src/com/andr
2015-01-05 20:57:25
5368
转载 Android中的Binder机制的简要理解二
接着上篇binder简要介绍(见 http://www.linuxidc.com/Linux/2012-07/66195.htm ),我们来分析binder机制的设计。binder主要框架分为三个部分:服务端,binder驱动,客户端。binder在Android最常见的使用场景就是一个程序的activity与系统service进行交互。比如我通过wifi的service来获取wifi控制
2014-12-27 17:34:42
3436
转载 Android中的Binder机制的简要理解一
转载自:http://www.linuxidc.com/Linux/2012-07/66195.htm我们知道,在Android系统中,每一个应用程序都运行在独立的进程中,这也保证了当其中一个程序出现异常而不会影响另一个应用程序的正常运转。在许多情况下,我们activity都会与各种系统的service打交道,很显然,我们写的程序中activity与系统service肯定不是同一个进程
2014-12-27 17:31:36
1921
转载 android -- 编译不同库及编译脚本之区别
转载自:http://blog.youkuaiyun.com/andyhuabing/article/details/8685916我们经常会编译不同库在不同的场合下,而也经常与第三方有合作,对方提供静态库,动态库及配置文件,也有可能需要提供库给对方等等,借此机会将所使用的一些情况作个总结。下面写的android.mk都是一些模板,可能模块可能不需要但加上也无所谓,必要时直接加即可。
2014-12-20 15:12:18
651
原创 如何在Android user 版本下打开UART log?
[DESCRIPTION]如何在Android user版本下打开UART log?[KEYWORD]user version kernel log[SOLUTION]为了加快运行速度,在user版本中关闭了UART log. 如果为了调试1. 打开一个文件: alps/mediatek/config/common/autoconfig/kconfi
2014-11-29 11:10:58
2520
原创 Android得到的真机的SD卡路径
public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals(Android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist){s
2014-11-26 11:13:19
1680
原创 debug版本开机后不出uartlog
kernel/kernel/printk.cinline void mt_disable_uart() { if(mt_need_uart_console == 0){ printk(">\n");
2014-11-26 10:29:33
1064
原创 [FAQ03891] 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台
FAQ Content[Description]如何在User版本开启串口(Uart),开启输入控制台,抓取上层Log [Keyword]User Uart Log Logcat 输入 控制台 串口 [Solution](1) 如何在User版本中使用串口(Uart) *Android GB 2.3 GB.MP GB.TDD.MP GB2.MP GB2.TDD.
2014-11-26 10:12:21
5636
原创 通过组合键进入recovery模式选择sdcard菜单升级,升级完如何自动重启?
[DESCRIPTION] MTK默认设计: 将OTA升级包放入SD卡根目录下,按键进入recovery模式选择sdcard菜单升级,升级完成后无法自动重启,需要手动选择菜单完成重启; 客户若有需求实现自动重启,请问应该如何更改! [SOLUTION] 修改recovery.cpp文件prompt_and_wait函数
2014-11-18 10:53:01
1086
The MediaMetadataRetrieverTest.java Android example source code
2011-09-16
AsynTask Demo doInBackground onPreExecute onPostExecute onProgressUpdate
2011-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人