- 博客(97)
- 收藏
- 关注
原创 Android应用程序的核心组件Activity
SingleTop(单顶模式):如果要启动的Activity已经位于栈顶,那么不会创建新的实例,而是调用已存在的实例的onNewIntent()方法。singleTask:如果要启动的Activity已经存在于任务栈中,则将该Activity上的所有Activity都出栈,使其成为栈顶的Activity,并调用其onNewIntent()方法。singleTop:如果要启动的Activity已经位于任务栈的顶部,则不会创建新的实例,而是调用已存在的实例的onNewIntent()方法。
2023-11-01 21:23:06
198
原创 Android广播BroadcastReceiver
有序广播(Ordered Broadcast):有序广播是一种按照优先级顺序依次传递的广播,每个接收者都有机会处理广播消息,并且可以中断广播的传递。标准广播(Normal Broadcast):标准广播是一种完全异步的广播,发送广播后,所有的接收者几乎同时收到广播消息。Android广播的实现原理是通过广播发送者发送广播,AMS根据广播过滤器的匹配条件选择合适的广播接收者,并将广播传递给它们。广播传递:当广播发送时,广播管理器会根据广播过滤器的匹配条件选择合适的接收者,并将广播传递给它们。
2023-11-01 21:22:24
380
原创 Java中使用正则表达式
在使用正则表达式时,可以通过指定匹配模式和修饰符来实现不同的匹配需求。正则表达式是一种强大的文本处理工具,掌握它可以提高文本处理的效率和灵活性。在实际应用中,可以根据具体的需求来编写和调试正则表达式,以实现各种复杂的文本操作。正则表达式的基本语法包括普通字符和特殊字符的组合。以上只是正则表达式在Java中的一些基本用法,正则表达式的语法非常丰富和强大,可以实现更复杂的字符串操作。除了以上基本语法外,正则表达式还支持一些元字符和特殊序列,用于匹配特定的字符类别或位置。
2023-10-30 23:43:37
379
1
原创 JVM调优常用参数
Xms:初始堆大小-Xmx:最大堆大小-Xmn:新生代大小-Xss:线程堆栈大小,默认为1M-XX:MaxPermSize=n:设置持久代大小-XX:NewRatio:新生代和老年代的比例-XX:SurvivorRatio:Eden区和Survivor区的比例。
2023-10-30 23:42:55
155
原创 Android数据对象序列化原理与应用
对比Parcelable所属APIJava API特点序列化和反序列化会经过大量的I/O操作,产生大量的临时变量引起GC,且反序列化时需要反射基于内存拷贝实现的封装和解封(marshalled& unmarshalled),序列化基于Native层实现开销相对高相对低效率相对低相对高适用场景简单序列化Android在使用进行对象的序列化时,有一些注意点需要注意:类的定义:被序列化的类需要实现接口,这是Java提供的一个标记接口,用于表示该类可以被序列化。如果一个类没有实现。
2023-10-28 22:24:01
645
原创 Java中的volatile关键字
由于JAVA共享变量是存储在主内存中,而JAVA线程是无法直接访问主内存数据,只能把主内存的数据拷贝一份副本,修改完本地内存的数据,再写回主内存,而此时另一个线程也把主内存的数据拷贝到自己私有的本地内存中,虽然线程1已经修改了主内存数据,但线程2却无法感知到,所以就出现了内存可见性问题。在数据库中,原子性也是一个重要的概念。总结起来,"volatile"关键字用于修饰变量,告诉编译器该变量可能会在意料之外的时候被修改,从而禁止对该变量进行某些优化,确保每次访问变量时都会从内存中读取最新的值。
2023-10-28 22:23:23
225
原创 Java String类为什么用final修饰
Java中的字符串是不可变的,这意味着一旦一个字符串对象被创建,它的值就不能被修改。当我们对一个字符串进行操作时,比如拼接、替换等,实际上是创建了一个新的字符串对象,而原来的字符串对象保持不变。字符串的不可变性:String对象是不可变的,这意味着一旦字符串被创建,它的值就不能被修改。这样可以确保字符串的值不会被修改,同时也可以提高字符串的重用性和效率,从而提高程序的安全性和性能。由于字符串对象的值不可改变,所以它们的哈希值也是不变的,可以作为HashMap的键使用。关键字,用于修饰变量、方法和类。
2023-10-11 00:45:17
117
原创 Android系统为什么采用Binder作为IPC机制
Android采用Binder作为IPC进程间通信机制有以下几个原因:高效性:Binder是一种基于内核的轻量级IPC机制,相比其他IPC机制(如Socket、管道等),Binder具有更高的性能和更低的资源消耗。它通过共享内存和零拷贝技术,实现了高效的进程间通信。安全性:Binder提供了安全的IPC机制,可以确保不同进程间的数据传输是可信的。它通过权限验证和沙箱机制,防止恶意进程对系统造成危害。
2023-10-09 20:14:51
175
原创 Android事件分发机制
它是ViewGroup类中的一个方法,用于将触摸事件传递给子View或处理自身的触摸事件。触摸事件的传递是通过触摸事件分发机制来实现的。当用户触摸屏幕时,系统会将触摸事件传递给顶层的ViewGroup,然后由ViewGroup负责将触摸事件传递给子View或处理自身的触摸事件。方法的作用是将触摸事件分发给子View或处理自身的触摸事件。它会根据触摸事件的类型和位置来确定是将触摸事件传递给子View,还是处理自身的触摸事件。
2023-10-09 20:14:00
168
原创 JVM内存线程Dump
Thread Dump文件记录了JVM中所有线程的当前状态和堆栈信息,包括线程的名称、状态、优先级以及线程所执行的方法和代码行数。生成Heap Dump文件后,可以通过分析文件来查看当前内存中的对象信息,包括对象的数量、大小、引用关系等。通过分析这些信息,开发人员可以了解线程的执行情况,找出可能的死锁、死循环等问题。在分析堆栈跟踪信息时,可以关注线程的状态、调用栈中的方法和行号,以及可能存在的锁信息等。是Java虚拟机(JVM)的一个命令行工具,用于生成Java堆的内存映像文件和查看Java堆的详细信息。
2023-10-01 02:36:41
323
原创 Java集合处理Stream流使用解析
它提供了丰富的工具和资源,用于处理文本数据,包括分词、词性标注、句法分析、语义分析、情感分析等。NumPy(Numerical Python)是一个开源的Python科学计算库,它提供了高效的多维数组对象和用于处理这些数组的工具。使用Scrapy,你可以定义一个爬虫,指定要爬取的网站和相应的规则,然后Scrapy会自动帮你下载网页、解析数据,并将其保存到你指定的位置。它提供了一种简单而灵活的方式来构建和发送自定义的网络数据包,并且可以用于网络协议的研究、网络安全测试和网络流量分析等领域。
2023-09-30 03:02:33
167
原创 常用的Python库
它提供了丰富的工具和资源,用于处理文本数据,包括分词、词性标注、句法分析、语义分析、情感分析等。NumPy(Numerical Python)是一个开源的Python科学计算库,它提供了高效的多维数组对象和用于处理这些数组的工具。使用Scrapy,你可以定义一个爬虫,指定要爬取的网站和相应的规则,然后Scrapy会自动帮你下载网页、解析数据,并将其保存到你指定的位置。它提供了一种简单而灵活的方式来构建和发送自定义的网络数据包,并且可以用于网络协议的研究、网络安全测试和网络流量分析等领域。
2023-09-30 03:01:30
119
原创 Android中PendingIntent的使用
比如,可以在用户点击通知栏的通知时,通过PendingIntent启动一个指定的Activity。比如,可以在用户点击通知栏的通知时,通过PendingIntent启动一个指定的Service。在Android开发中,PendingIntent是一种特殊的Intent,用于在将来的某个时间点执行某个操作。比如,可以在设定的时间点触发一个闹钟,通过PendingIntent执行相应的操作。总之,PendingIntent可以在特定的时间点执行某个操作,常用于与通知、闹钟、定时任务等相关的场景。
2023-09-28 01:15:39
699
原创 Jetpack生命周期感知组件ViewModel
ViewModel是一种用于存储和管理与UI相关的数据的类,它的生命周期与Activity或Fragment的生命周期无关,因此可以在多个Fragment之间共享数据。当Activity重建时,ViewModel保存的数据没有丢失的原因是ViewModel的生命周期与Activity的生命周期不同步。这样可以确保数据的持久性,并且不会因为配置变化而丢失。当Fragment被销毁时,ViewModel的实例会被保留,下次再创建相同的Fragment时,可以通过ViewModel的实例来获取之前保存的数据。
2023-09-28 01:14:45
360
原创 Jetpack数据绑定DataBinding
DataBinding是一种用于将布局文件中的视图与数据模型进行绑定的技术。通过在布局文件中使用特定的语法,我们可以将视图的属性与数据模型中的字段或方法进行绑定。当数据模型发生变化时,视图会自动更新,反之亦然。使用DataBinding可以减少手动编写findViewById()和setText()等繁琐的代码,提高开发效率。同时,它还可以减少因为视图和数据模型不同步而导致的bug,提高代码的可靠性。
2023-09-25 23:43:42
45
原创 Jetpack视图绑定ViewBinding
总结来说,ViewBinding是一种方便、高效的视图绑定方式,可以减少代码的冗余和错误,并提高开发效率。它是Android开发中的一个很好的工具,值得开发者们去尝试和使用。通过使用ViewBinding,可以减少代码量,提高开发效率,并且避免了因为使用findViewById()方法而可能导致的类型转换错误。
2023-09-24 01:59:15
195
原创 Java字节码
Java字节码常量池(Constant Pool)是Java字节码文件中的一个重要部分,它用于存储字节码文件中使用到的常量。Java字节码操作是一项强大的技术,可以实现一些高级的功能和扩展,但需要对字节码的结构和规范有一定的了解,并谨慎使用。总结起来,操作数栈和字节码是Java虚拟机中的两个重要概念,操作数栈用于存储方法的参数和临时结果,字节码是Java源代码编译后生成的中间代码,通过字节码指令对操作数栈进行操作,实现程序的功能。在进行字节码操作时,需要了解字节码的结构和指令集,以及相关的编码规范。
2023-09-22 22:02:47
891
1
原创 颜色透明度换算
在开发中,UI在设计稿中标注的颜色都是类似RGB或者HEX颜色值(#FF0000红色),但是标注后面还有透明度比如30%,下面我们就来看看透明度怎么转换为16进制值。程序中颜色值通常遵循RGB/ARGB标准,使用时通常直接使用RGB255类似的值或者以16进制#字符串表示。常用的颜色表示有:其中ARGB依次代表透明度(alpha),红色(red),绿色(green),蓝色(blue)。例如颜色值#FF99CCBB,其中FF是透明度,99是红色值,CC是绿色值,BB是蓝色值。
2023-09-21 21:45:41
802
原创 Android第三方推送
极光推送开发者集成 JPush Android SDK 到其应用里,JPush Android SDK 创建到 JPush Cloud 的长连接,为 App 提供永远在线的能力。 当开发者想要及时地推送消息到达 App 时,只需要调用 JPush API 推送,或者使用其他方便的智能推送工具,即可轻松与用户交流。图中红色部分,是 JPush 与 App 开发者的接触点。手机客户端侧,Ap
2017-12-14 11:19:39
1797
原创 Android开发之加密解密
加密算法主要作用就是隐藏信息,让信息不可见,也用于提高网络访问的安全。常见加密算法BASE64 用于二进制内容转换为可编辑的文本内容MD5 信息摘要算法SHA 安全散列算法HMAC 散列消息鉴别码DES 数据加密算法PBE 基于密码验证RSA 非对称加密算法SSL SSL加密 - https协议DH 密钥一致协议DSA 数字签名ECC 椭圆曲线密码编码学BASE64
2017-12-14 11:19:36
1265
1
原创 Android开发之推送
工信部将统一安卓推送标准,我们暂且先抛开(还没统一嘛_)推送,目前几乎是APP的标配了。我们来看看推送这件事。推送的实现方案总结一下几种推送实现方式(历史解决方案),目前已经被废弃掉了,了解一下还是有必要的。1.轮询应用程序阶段性的与服务器进行连接并查询是否有新的消息到达,必须自己实现与服务器之间的通信,例如消息排队等。而且还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,
2017-12-14 11:19:33
451
原创 自定义View简单案例-自绘控件
实现的效果继承View继承ViewGroup实现一个顶栏下面来实现上面效果自定义View基础:Android开发之自定义View基础继承View需要自定义绘制内容,需要继承View,必须要重写onDraw方法,在onDraw方法中来进行绘制,实现onMeasure方法,来测量控件的空间。创建类,继承View或View的子类,并提供相关的构造方法publi
2017-12-14 11:19:30
328
原创 Android开发之自定义View
自定义控件使用场景: 在实际开发中经常会遇到现有的UI控件不能满足项目需求,或一个功能涉及到多个UI控件的组合,或实现某一特效的UI,这时必须通过自定义View的方式,实现这些功能,例如股票的实时统计图、电子书等。分类绘制控件 - 自绘控件1.继承View需要自定义绘制内容,需要继承View,必须要重写onDraw方法,在onDraw方法中来进行绘制,实现onMeasure方法,来测量控
2017-12-14 11:19:26
345
原创 应用抓包之Fiddler抓包
抓包前准备tcpdump抓包:应用抓包之tcpdump命令抓包原料1.抓包工具Fiddler(Windows版)2.真机一个3.预抓包的App一个(我们以app抓包为例)FiddlerFiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试w
2017-12-14 11:19:22
408
原创 应用抓包之tcpdump命令抓包
抓包前准备原料1.预抓包的App一个(我们以app抓包为例)2.已配置android sdk3.分析软件Wireshark(Windows版)4.抓包命令:tcpdump5.模拟器或真机(以模拟器为例,真机需root)抓包准备首先我们先配置下环境变量1.先来个ANDROID_HOME:SDK的路径,类似于JAVA_HOME。(一劳永逸,以后安装到别的路径,改变一下HOME路径就行
2017-12-14 11:19:19
2866
原创 Android开发之代码混淆
应用混淆(ProGuard)ProGuard是一个免费的JAVA类文件压缩,优化,混淆器。它探测并删除没有使用的类,字段,方法和属性,它删除没有用的说明并使用字节码得到最大优化,它使用无意义的名字重命名类,字段和方法。我们先来介绍下ProGuard我们为啥要使用ProGuard?优化应用:创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用;防止反向:创建的程序和程序库很
2017-12-14 11:19:15
333
原创 Android开发之蓝牙(Bluetooth)
Talk一下在上一篇中有介绍了Wifi与网络连接处理Android开发之WiFi与网络连接处理下面,来继续说说Android中蓝牙的基本使用。BluetoothBluetooth是目前使用的最广泛的无线通讯协议之一,主要针对短距离设备通讯(10米),常用于连接耳机、鼠标和移动通讯设备等。值得一提的是:android4.2新增了部分新功能,但是对于Bluetooth熟悉的人或许开始头疼
2017-12-14 11:19:12
1435
原创 Android开发之WIFI与网络连接处理
网络连接处理在说WiFi之前,先来说说网络连接处理。在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络。判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线连接还是GPRS手机网络连接,这样就可以在不同的网络连接下去调用不同的方法,处理不同的事情。现在app大多都需要从网络上获得数据。所以访问网络
2017-12-14 11:19:09
4608
原创 Android开发之PreferenceActivity的使用
PreferenceActivity在开发应用程序时,有时我们会有选项设置界面,通常我们可以使用SharePreference以键值对的形式进行保存。Android为我们提供了PreferenceActivity。PreferencesActivity是Android中专门用来实现程序设置界面及参数存储的一个Activity。我们只要把Activity继承PreferenceActivity,
2017-12-14 11:19:06
1570
原创 Android Studio中Instant Run
Instant Run翻译成中文叫即时运行或直接运行模板。不过我一般习惯了叫做闪电运行,为什么这么叫?请看图:小闪电有个小闪电(2.3.x版本独立有个小闪电,2.0-2.2是和左边运行图标在一块),因为是个小闪电,所以我习惯了叫做闪电运行。在Android Studio 2.0中引入的Instant Run是运行和调试命令的一种行为,可以显着减少应用更新的时间。虽然您的第一次
2017-12-14 11:19:02
888
原创 Android开发之WebView的使用(2)
在上一篇中我们说了WebView的基本使用安卓开发之WebView的使用(1),里面提到了WebViewClient和WebChromeClient。下面我们来探究一番WebViewClient和WebChromeClientLet's Go先了解一下概念Android WebView做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程
2017-12-14 11:18:58
630
1
原创 Android开发之WebView的使用(1)
WebView目前android市场上的一些应用采用的开发方式大致分为三种:> Native App - 用原生的Android控件开发出来的应用> Web App - 使用网页开发的应用> Hybrid App - 混合式的应用,原生的控件和网页混合开发Hybrid App中实现的主要技术native组件与Javascript的数据交互以及实现。概览:Android WebV
2017-12-14 11:18:55
361
原创 Android开发之NDK
NDKNDK全称:Native Development Kit。关于NDK,360百科是这么说的:1.NDK是一系列工具的集合。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK集成了交叉编译器,并提供了相应的mk文件隔离平台、CPU、API等差异,开发人员只需要简单修改mk文件(指出
2017-12-14 11:18:52
298
原创 Android基础之动画资源浅析
动画在开发中,为了让我们的App更加生动,我们往往会加入一些动画效果,下面我们来说说安卓中的动画。安卓中提供了帧动画,补间动画,属性动画。下面来一一说明帧动画具体实现第一:新建一个 drawable 资源 以animation-list 为根节点。子节点 有两个属性,一个是 drawable 为当前帧的图像, duration 为当前帧保留时间。第二:给 ImageView 或者其
2017-12-14 11:18:44
459
原创 Android性能优化(下)
Android性能优化内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优化(中)我们继续说说Android布局和代码优化布局优化抽象布局标签标签include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化。下面以在一个布局main.xml中用include引入另一个布局foot.xml为例。main.mxl代
2017-12-14 11:18:36
409
原创 Android性能优化(中)
Android性能优化在上一篇中介绍了性能优化的概念、内存泄漏和性能优化方式Android性能优化(上)我们继续说说Android性能优化数据库性能优化索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率。(1). 优点大大加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序
2017-12-14 11:18:32
209
原创 Android性能优化(上)
性能优化的概念响应时间响应时间: 从用户操作开始到系统给用户以正确反馈的时间。一般包括逻辑处理时间 + 网络传输时间 + 展现时间。对于非网络类应用不包括网络传输时间。展现时间即网页或App界面渲染时间。响应时间是用户对性能最直接的感受。TPS(Transaction Per Second)TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query Per
2017-12-14 11:18:29
423
原创 Android基础之Activity与Intent
Task和BackStack的基本概念Task的理解Task是多个Activity的集合,用户进行操作时将与这些Activity进行交互。 这些 Activity 按照启动顺序排队存入一个栈(即“back stack”)。Back Stack大部分Task都启动自Home屏幕。当用户触摸application launcher中的图标(Home屏幕上的快捷图标)时,应用程序的Task就进入
2017-12-14 11:18:25
437
原创 Android5.X之PercentLayout
引入依赖库compile 'com.android.support:percent:24.x.x'主要类PercentRelativeLayout(继承自RelativeLayout)PercentFrameLayout(继承自FrameLayout )属性layout_widthPercent 设置控件宽度为父容器的宽的百分比layout_heightPercent 设置
2017-12-14 11:18:22
406
原创 Android5.X之ToolBar
ToolBar众所周知,在使用ActionBar的时候,一堆的问题:这个文字能不能定制,位置能不能改变,图标的间距怎么控制神马的,由此暴露出了ActionBar设计的不灵活。为此官方提供了ToolBar,并且提供了supprot library用于向下兼容。Toolbar之所以灵活,是因为它其实就是一个ViewGroup,我们在使用的时候和普通的组件一样,在布局文件中声明。隐藏ToolBar
2017-12-14 11:18:20
345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人