自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (4)
  • 收藏
  • 关注

原创 浅谈Android Handler消息机制

Handler简介Handler机制在安卓开发中很常应用到,Handler机制也可以称为异步消息机制,包括Handler,Message,Looper以及MessageQueue,主线程不能做耗时操作,如果要更新UI必需要子线程去通知主线程去更新。Handler:消息机制的处理者,在子线程中调用sendMessage方法发送对应的Message,然后经过一系列的辗转后最终消息会被传递到Handler的handlerMessage方法中被处理,即在创建Handler时重写handleMessage方法中

2021-03-18 11:28:19 575 3

原创 Java--用AWT编写图形用户界面(入门篇一)

java.awt包提供了基本的GUI设计工具,主要包括组件(Component)、容器(Container)和布局管理器(LayoutManager);Java的图形用户界面的最基本组成部分是组件(Component),组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来;组件(Component)类的部分重要的成员方法有:getComponentAt(int x,int y) ...

2019-03-27 23:24:52 45685 6

原创 DevEco Studio搭建第一个demo (router路由跳转的使用)

显式 Intent:通过指定目标 Activity 的类来启动新的界面隐式 Intent:通过 Intent 的动作和数据来启动活动,而不是直接指定目标 Activity这里就不过多介绍啦,有兴趣的小伙伴可以去百度百度;

2024-09-12 10:30:39 1024

原创 HarmonyOS应用开发环境搭建

本文主要讲述的是HarmonyOS应用开发环境的搭建,HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造,为运行在HarmonyOS系统上的应用和服务提供一站式的开发平台。具体下载链接。

2024-09-06 16:00:43 723

原创 One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn‘t being...

(应用内评价),如果是用到了google play core里面的其他模块的话,具体需要翻阅下文档,因为google把功能的模块依赖细分了。google库相关的,有的话需替换成。先确认包里面是否有引用。

2024-09-02 15:09:01 100

原创 单例模式双重锁中volatile的作用

Java面试中级题,android面试

2022-06-14 16:00:05 607 3

原创 AAPT: error: resource android:attr/lStar not found.(已解决)

android 编译报错问题

2022-05-17 10:37:47 9786 1

转载 mmap数据拷贝详解

https://zhuanlan.zhihu.com/p/357820303

2022-01-11 11:13:57 439

原创 IOS之回调方法总结

IOS回调方法总结什么是回调四种回调循环对象目标-动作对辅助对象通知Block什么是回调回调(callback)就是将一段可执行的代码和一个特定的事件绑定起来,当特定的事情被触发的时候,就会执行这段代码,这就是回调。IOS里面回调包括四种:目标-动作对(target-action)、辅助对象(helper objects)、通知(notification)以及Block对象(Blocks);四种回调目标-动作对(target-action): 在程序开始等待之前,要求“当事件发生时,向指定的对像发

2021-11-23 20:44:09 3259

原创 fatal: unable to access ‘https://github.com.XXX.git/‘: Could not resolve host: github.com.XXX

我是在Android 生成依赖库的时候遇到这个问题的D:\MyApplication>git push -u origin mainfatal: unable to access 'https://github.com.XXX.git/': Could not resolve host: github.com.XXX可以先在命令行下运行下面的代码:git config --global --unset http.proxy git config --global --unset https

2021-11-16 11:14:12 2360

原创 编译生成APK的全过程

不关是Android 客户端还是Android SDK等,在平时工作的时候都会遇到过生成Apk的时候,用AS的话的确是一键就可以生成一个Apk,但是很多小伙伴还不知道从代码到一个Apk文件这中间到底经历了什么,接下来我们就大致说说,先上一张官方的图:这里先大致讲一下图中涉及到的一些工具:工具用处aaptAndroid的资源打包工具aidl用于将Android的接口语言转换成.java的工具javacJava Compilerdex将.class文件转换成D

2021-10-26 16:42:39 2438

原创 你好,Android AAB!

文章目录前言一、aab是什么?二、aab和apk的区别1.aab和apk的文件格式2.Split APKs3.Bundletool的使用总结前言Google在2021年的8月份起,要求所有上架Google Play的应用必须采用.aab的新格式才可以上传应用包,对于aab新格式的包其实早在去年的年底官方就做了对应的通知了,不过aab虽然首次出现的时间是在2018年,但是在国内很少被提及到,基本上都是以apk为主,现在既然Google强制要求使用aab来上架GP(Google Play),那么这篇文章.

2021-07-15 17:51:01 2292 6

原创 Java static关键字总结

static 关键字在Java中,被static声明过的成员变量称为静态成员变量,也称为类变量。如果一个成员使用了static关键字修饰,那么这个成员就不在属于对象了,而是属于类,在这个类中的所有对象实例所共享,可以节省很多内存空间;也可以用一句话来总结,就是方便在没有创建对象的情况下来进行调用,也就是说,被static所修饰过的成员变量或者成员方法,不需要去new一个实例对象,然后再进行调用,而是可以直接通过 类名就可以去访问,举个例子:public class student{ //定.

2021-06-19 16:15:10 159

原创 为什么重写equals()方法就必须重写hashCode()方法呢?

文章目录前言一、equals和==二、hashCode()方法三、hashCode() 与 equals()1.不会创建“类对应的散列表”,不存在重写equals()要重写hashCode()2.当类需要放在HashTable、HashMap、HashSet等hash结构的集合时需要重载hashCode()总结前言对于Java开发或者Android开发的小伙伴来说,在面试的时候,应该都会遇到面试官问这么一个问题:你知道equals()和 == 的区别在哪嘛?小伙伴的第一反应一般都会是回答:equal

2021-06-08 17:12:22 689

原创 手把手教你Hook Android 点击事件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是Hook?二、Hook的优势三、Hook前置条件1.反射2.代理模式四、Hook实战总结前言随着技术的不断创新,Android的需求也是越来越多,Hook技术是走向Android高级开发的必经之路。提示:以下是本篇文章正文内容,下面案例可供参考一、什么是Hook?Hook,简称“勾子”,用通俗易懂的方式来说就是勾住代码的逻辑,通过拦截的手段,插入自己的代码逻辑,在保证原有功能不变的情况下新增自己的逻辑功能

2021-05-22 15:24:13 2556 8

原创 Android 必知的TCP/IP的三次握手和四次挥手

前言网络一共被分为七层,从下往上分别是物理层 > 数据链路层 > 网络层 > 传输层 > 会话层 > 表示层 > 应用层而TCP和UDP是属于传输层,负责数据的传输,我们常说的HTTP和HTTPS是属于应用层,主要是负责使用接收到的数据;从这里我们可以简单的了解到,IP协议对应网际互联层,只负责找到地址;TCP协议对应传输层,负责具体的传输工作;HTTP协议对应应用层,负责对接收到的数据进行解析那么什么是TCP呢?建立一个TCP的过程是怎样的呢?断开TCP的过.

2021-04-27 15:12:26 833

原创 多线程之Synchroized解析

前言既然提到Android的多线程,那我们就先来回顾一下线程是怎么创建的先。Android常用的线程创建方式主要用两种(这两种线程的创建方式是我们在开发过程中比较常用到的,还有线程池以及Callable可以创建线程,只是用的会稍微少一些):继承Thread类,重写Thread的run()方法;实现Runnable接口,然后重写Runnable接口里面的run()方法;两者的关系:Thread类其实是实现了Runnable接口的,然后两者都需要重写run()方法,Runnable可以实现多个.

2021-04-26 17:03:46 213

原创 Parcelable与Serializable的性能比较

Parcelable与Serializable的性能比较ParcelableSerizlizable实现Parcelable接口实现Serizlizable接口android 专用Java 自带内存消耗:低内存消耗:一般内存中直接进行读写通过使用IO流的形式将数据读写入在硬盘上不支持持久化支持持久化速度快速度一般...

2021-04-25 14:53:34 195

原创 Android + Java 基础知识

1、抽象类和接口的区别抽象类接口类Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法叫做抽象方法Java中接口使用interface关键字修饰的被称为接口抽象类不能被实例化,只能被继承在接口中可以定义成员变量,但是这些成员变量默认都是public static final的常量包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法一个类实现某个接口,必须要实现接口中定义的所有方法抽象类可以包含属性、方法、构造方法,但是构造

2021-04-08 20:38:41 458

原创 谈谈Android中的HandlerThread

**一、简介**在详细讲解这篇文章之前,应该有部分的Android初级开发者并没用使用过HandlerThread,最常使用的消息传递机制应该离不开Handler,那么Handler跟HandlerThread有什么不同呢,好处又在哪里?名詞解释Handler在android中负责发送和处理消息,通过它可以实现其他支线线程与主线程之间的消息通讯Thread进程中执行运算的最小单位,亦即执行处理机调度的基本单位HandlerThread一个继承自Thread的类H

2021-03-06 16:20:47 540

原创 Java volatile关键字及双重锁单例详解

synchronized相信大家都应该不陌生吧,这个关键词一般出现在单例模式里面比较常见,在叙说这篇文章之前,我们先看看什么是内存模型概念,这对后续的理解有很大的帮助。内存模型概念计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进

2021-01-13 14:31:12 278

原创 Android 导入了Jar包却无法引用

在自己的想入中引入了Jar包却无法找到对应的代码,如图![在这里插入图片描述](https://img-blog.csdnimg.cn/2020122414230622.png而且在app buil.gradle里面也把这个包加进来了(上图和下图只是举个列子,对不上没关系的)解决方式是把implementation改成api,然后再sync下项目就搞定了...

2020-12-24 14:24:54 1915 1

原创 Activity的启动流程详解

简介踏入Android开发有一小段时间了,第一次接手项目的时候状态就是上午自己写Bug,下午改自己的Bug,慢慢的接触的技术多了,就开始写项目上的一些小模块之类的,作为一个开发,技术是永远都学不完的,技术的更新速度快过自己的学习速度,但是个人觉得,如果想作为一名合格的程序猿,一些开发 的底层代码是肯定要了解的。就打个比方(就拿Android来说),你如果是实习的时候去面试,面试官问你Activity的启动流程是怎样的,你脑子里第一反应就是onCreate,onStrat,onResume,onPaus.

2020-12-19 16:50:26 757 1

原创 Java 代理模式(动态代理)

代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理,动态代理在Java中有着广泛的应用,最常见的可能就是Spring AOP了,还有Java注解对象获取、日志等各个方面。由于Java动态代理与Java反射机制关系紧密,所以在阅读这篇文章之前读者需要对Java反射机制有一定的了解,如果不了解反射机制也不需要慌,这里推荐一篇文章反射机制详解,这篇文章对...

2020-12-07 16:08:04 529

原创 Android Binder进程通信机制

Android 要采用 Binder 作为 IPC 机制,所以在了解Binder之前我们先来了解下什么是IPC机制先…IPC机制IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。在Linux系统之中,进程间IPC机制包含多种,如下表格:IPC机制优缺点管道在创建时分配一个page大小的内存,缓存区大小比较有限消息队列信息复制需要两次,额外的CPU消耗,不合适频繁或信息量大的通信

2020-11-04 18:52:00 402

原创 Android动态加载Dex文件及DexClassLoader详解

ClassLoader“类加载器”(ClassLoader),顾名思义,就是用来动态加载class文件的。ClassLoader作用主要有三个:负责将 Class 加载到 JVM 中审查每个类由谁加载(父优先的等级加载机制)将 Class 字节码重新解析成 JVM 统一要求的对象格式有兴趣的小伙伴可以看看JVM是如何加载一个类的 类的加载机制ClassLoader(Java)Class clz = Classloader.loadClass(类全名),其实就是通过一个类的全名,生成这.

2020-10-30 16:42:19 16093 4

原创 JVM 类的加载机制

1、JVM 运行实例中会存在多个 ClassLoader,不同的 ClassLoader 会从不同的地方加载字节码文件。它可以从不同的文件目录加载,也可以从不同的 jar 文件中加载,也可以从网络上下载字节码再进行加载。那JVM是如何进行类的加载的呢?一个类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三个部分统称为连接(linking)。加载通过一个类的全限定名来获取该类的二进制字节流,将这个

2020-10-30 14:34:29 487

原创 ‘gbk‘ codec can‘t decode byte 0xa6 in position 4: illegal multibyte sequence 问题解决

在打开文件时出现“‘gbk’ codec can’t decode byte 0xa6 in position 4: illegal multibyte sequence”报错,解决如下:open(path,‘rb’),即在读取文本的时候加入参数‘b’。

2020-10-19 15:30:16 4898

原创 美团技术--多渠道打包脚本

对于游戏每次发布新版本时,都会发布到国内各大应用市场,为了统计不同应用市场的推广效果,我们会为每一个apk添加唯一的标识(渠道号),方便进行数据统计…按照这个想法,本人一开始是通过在Android工程下的清单文件里面添加一个渠道标签,如下: <meta-data android:name="CHANNEL_ID" android:value="XXX"/>然后封装一个工具类,在游戏启动的时候去动态获取这个Cha

2020-10-17 11:08:37 2509

原创 WxPython(五) -- StaticBox,下拉框ComboBox,文件选择框FileDialog以及消息对话框MessageDialog

StaticBox在wxPython中,StaticBox提供了盒子周围的边框以及顶部的标签,等同于wx.BoxSizer,不一样的地方就在于多了个边框以及顶部的标签使用教程:创建一个wx.StaticBox对象。使用上面的静态框作为参数声明一个wx.StaticBoxSizer。创建控件并添加staticbox sizer。将其设置为框架的sizer # 创建一个wx.BoxSizer对象。 LogSizer = wx.BoxSizer() .

2020-10-14 17:31:06 2801

转载 WxPython(四) -- Subprocess.Popen详解

从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值。subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.*一、subprocess.Popensubprocess模块定义了一个类: Popenclass subprocess.Popen( args,bufsize=0,executable=Non

2020-10-13 15:41:34 2662

原创 WxPython(三) -- 封装日志模块输出到GUI界面

# -*- coding:utf-8 -*-import loggingimport osimport timeimport wxclass TextHandler(logging.Handler): def __init__(self): logging.Handler.__init__(self) self.ctrl = None def set_ctrl(self, ctrl): self.ctrl = ctrl

2020-10-10 17:21:11 1855 4

原创 WxPython(二) -- 编码问题 u‘中文‘

编码问题对于开发的程序员来说并不陌生,相信每个程序员在开发的路上都有遇到过乱码的问题,在python下也是如此,接下来就来看看python是如何进行编码的。python内部使用的是unicode编码,而外部却要面对千奇百怪的各种编码,比如gbk,gb2312,utf8等,那这些编码是怎么转换成内部的unicode呢?在pyhon中,源代码文件必然是以某种编码形式存储代码的,python编译器默认会认为源代码文件是asci编码,就好比如现在有一个变量 ‘a’,然后进行日志打印,python认为这个’a’就

2020-10-10 11:37:41 517

原创 WxPython(一) -- 窗口分割

分隔窗口(wx.SplitterWindow)就是将窗口分成两部分,即左右或上下两部分,两个窗口之间的分隔线是可以拖动的,称为“窗框”(sash)。SplitterWindow中一般常用的方法有两种:水平分割跟垂直分割SplitVertically(LeftWindow, RightWindow, sashPosition=0)。设置左右布局的分隔窗口,LeftWindow为左窗口,RightWindow为右窗口,sashPosition是窗口的位置,可以是0,也可以自定义。SplitHorizont

2020-10-09 18:36:24 1827 1

原创 Python GUI(Tk)编程(二)--Entry,Button,Label的基本使用

Entry 顾名思义,就是个输入框,用户可以在里面输入任何东西,开发者也可以指定输入的形式或者字体的自定义,下面是Entry对应的一些属性值以及方法名:属性值描述bg输入框背景颜色bd边框的大小,默认为 2 个像素cursor光标的形状设定,如arrow, circle, cross, plus 等font文本字体exportselection默认情况下,你如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能刻工艺设置 exportselec

2020-09-27 15:35:24 1355

原创 YSDK QQ登录无回调的巨坑

YSDK 手Q登录无回调,加上这句话就可以了(记得导入so文件)android {compileSdkVersion 26buildToolsVersion “26.0.1”defaultConfig {…ndk { abiFilters “armeabi” }}顺便吐槽下YSDK的文档太坑了

2020-09-22 11:17:37 642

原创 python中for + remove的坑

假如有个集合[‘a’, ‘b’, ‘c’, ‘d’, e’, ‘f’, ‘g’],然后使用for循环去遍历,然后指定删除c跟d,运行后你会发现只删除掉了c,并没有删除掉d,这是为什么呢?查了资料发现,是for循环的问题。因为for循环实际是循环的列表下标(索引),同时由于列表的可变性,每一次删除一个元素,列表的长度就会发生变化,元素的索引也会发生变化。举个例子:第一次循环,循环索引为0,此时索引为0的元素是a,不满足条件。集合为[‘a’, ‘b’, ‘c’, ‘d’, e’, ‘f’, ‘g’]第二

2020-09-19 17:28:14 439

原创 Python GUI(Tk)编程(一)--设置窗口居中显示

今天刚开始接触Python图形界面的编写,了解了多种第三方图形界面编写的库,例如Tkinter、wxPython以及Jython等等…Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。wxPython:wxPython Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健

2020-09-17 12:27:37 4399

原创 Jar包转.dex文件,.dex文件转Smali文件

做Android游戏sdk开发少不了反编译,需要出很多的渠道包,例如360、九游、百度等等…打包的流程就是需要拿到游戏的母包,对这个母包进行反编译,然后替换assets文件,lib文件,资源文件,修改对应的包名,还有需要替换掉部分代码,合并资源文件以及AndroidManifest.xml文件,在进行回编译签名出包,如果每次都是按照这个流程走,出一个包的话需要花费不少时间,所以每个Android SDK游戏开发人员都会写一套自己的反编译脚本,能省去很多时间,今天就来讲讲怎么把Android中用代码生成的c

2020-09-14 11:39:41 2134 2

原创 Android AAPT重新生成R文件报错:First type is not attr!

今天在写脚本的时候涉及到反编译,反编译之后替换所有资源文件以及smali文件,之后就是使用android aapt工具来重新生成R文件,没想到在运行的时候报错了,first type is not attr,问了度娘,基本上说是由于apk包是as中的aapt2打出来的,而apktool使用的是aapt,所以生成R文件的时候的时候出现了是用aapt去生成aapt2打的包,最好的解决方法就是替换最新的aapt文件,去apktool官网下载个最新的Apktool.jar,然后用好压打开这个jar文件,找到aapt

2020-09-11 11:25:14 1010

Dex_Plugin_Project.zip

Android动态加载Dex文件,将一个类转为jar包的形式,通过android sdk自带的dx.jar工具转换jar包为包含dex文件的Jar文件,然后用DexClassLoader去加载 详情看我博客 https://blog.csdn.net/qq_42889476/article/details/109382647

2020-10-30

利用DiskLruCache和LruCache实现简单的照片墙--demo

利用DiskLruCache和LruCache实现简单的照片墙,可以在没有网络的情况下浏览之前浏览过的内容,DiskLruCache和LruCache会在磁盘内存中对内容做一个相应的缓存

2019-08-06

DiskLruCache.java

DiskLruCache之缓存技术,由于DiskLruCache并不是由Google官方编写的,所以这个类并没有被包含在Android API当中,DiskLruCache的源码在Google Source上

2019-08-06

eventbus_demo_project.rar

如果运行普通事件,请把EventBus.getDefault().register(this);取消注释 如果运行粘性事件,请把EventBus.getDefault().register(this);注释掉 EventBus的详细讲解请看我的博客

2019-08-05

空空如也

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

TA关注的人

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