
android
文章平均质量分 78
dm菜鸟编程
专注于 Java、kotlin、Android,数据结构、以及算法等领域的技术分享与学习。我有多年的开发经验,深入研究并实践了多种技术栈,尤其擅长 Android 开发、并发编程和性能优化。通过技术博客,我希望将自己在工作中积累的经验和对技术的理解传递给更多的开发者,帮助大家在编程的道路上更高效地成长,欢迎大家关注我~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Handler在有屏障消息和没有屏障消息时的区别
在普通消息(Synchronous Messages):默认通过Handler发送的消息,按照发送顺序和时间戳(when)插入到消息队列中。异步消息(Asynchronous Messages):通过设置Handler为异步模式或手动标记消息为异步,具有较高的优先级,旨在绕过某些同步机制,快速处理重要任务。屏障消息(Barrier Messages):特殊类型的消息,用于在消息队列中设置屏障,阻止普通消息的处理,仅允许异步消息通过。通常由系统内部使用,开发者不直接操作。的next()原创 2024-12-03 17:51:39 · 1013 阅读 · 0 评论 -
Kotlin 协程与架构组件结合使用:简化异步操作的利器
我们不再需要手动管理协程的生命周期,它会根据 Activity 或 Fragment 的生命周期自动管理协程的启动和取消。是 Android 中用于管理 UI 相关数据的组件,结合 Kotlin 协程后,可以更加简洁地处理异步数据流。通过这些扩展和 API,协程与架构组件的结合提供了更加简洁、安全的异步编程方式,极大地提升了开发效率和代码质量。绑定的协程作用域,它会在组件的生命周期结束时自动取消协程,确保协程不会在不再需要时继续执行。会在生命周期结束时取消协程,避免协程在不再需要时继续执行。原创 2024-11-27 07:18:19 · 1282 阅读 · 0 评论 -
深入探秘 WorkManager:Android 异步任务管理的强大工具
WorkManager 是 Google 提供的一个异步任务管理框架,它的主要目标是帮助开发者更轻松地管理应用中的异步任务,确保任务在合适的时间和条件下执行,同时提供了强大的功能和灵活性,以满足各种应用场景的需求。WorkManager 的设计理念是将异步任务的管理与应用的生命周期解耦,使得任务的执行不受应用是否处于前台或后台的影响。原创 2024-09-25 22:29:35 · 1969 阅读 · 0 评论 -
深入剖析 Android Lifecycle:构建高效稳定的应用
在某些情况下,我们可能需要自定义一个类来作为,例如创建一个自定义的ViewGroup或View,并让它具有生命周期管理的能力。要实现自定义创建 LifecycleRegistry 对象在自定义类的构造函数中,创建一个对象来管理生命周期状态。实现 getLifecycle () 方法让自定义类实现接口,并返回创建的对象。发送生命周期事件在自定义类的生命周期方法中,通过对象发送相应的生命周期事件。以下是一个简单的自定义@Override在上述示例中,我们创建了一个自定义的View。原创 2024-09-26 18:51:29 · 2092 阅读 · 0 评论 -
探索 Android DataBinding:实现数据与视图的完美融合
DataBinding 是 Android 框架提供的一个数据绑定库,它允许你将数据与视图组件进行绑定,实现数据的自动更新和视图的响应式布局。通过 DataBinding,你可以减少手动操作视图的代码,提高代码的可读性和可维护性,同时也能够更好地实现 MVVM(Model-View-ViewModel)设计模式,提高应用的模块化和可测试性。DataBinding 的核心概念是数据绑定表达式,它是一种特殊的语法,允许你在 XML 布局文件中使用表达式来绑定数据到视图组件上。原创 2024-09-26 22:02:29 · 1397 阅读 · 0 评论 -
深入理解LiveData:Android生命周期感知的数据持有类
LiveData 是构建响应式 UI 的强大工具,它通过生命周期感知和数据观察模式,确保了数据与视图的同步更新。合理使用 LiveData 可以提高应用的稳定性和性能。原创 2024-09-28 11:47:18 · 686 阅读 · 0 评论 -
Android开发中的ViewModel
在Android开发中,随着应用复杂度的提升,如何有效管理UI组件的生命周期和数据成为了一个挑战。它允许我们存储和管理与UI相关的数据,同时在配置更改(如屏幕旋转)时,保持数据的持续性。当Activity或Fragment被销毁时,关联的ViewModel会暂停数据更新,直到新的Activity或Fragment重新绑定并请求数据。在Android应用开发中,ViewModel作为架构组件之一,扮演着管理UI数据和生命周期的关键角色。负责创建和维护ViewModel的实例。原创 2024-09-28 21:36:49 · 725 阅读 · 0 评论 -
android应用之间分享资源
android应用之间分享资源:将两个应用android:shareUserId设置相同,应用的签名也要一样,通过比如:A应用:manifestxmlns:android="http://schemas.android.com/apk/res/android"02 package="com.share.sql原创 2016-10-28 11:19:45 · 714 阅读 · 0 评论 -
webView常见漏洞以及解决方法
1.Android 4.4 之前的版本 webkit 中内置了”searchBoxJavaBridge_”接口。攻击者可通过访问searchBoxJavaBridge_接口利用该漏洞执行任意Java代码。解决方法:webView.removeJavascriptInterface("searchBoxjavaBridge_");2.Android 4.4 之前的版本 WebView原创 2016-10-25 14:14:58 · 2559 阅读 · 0 评论 -
android调用输入法
/** * 显示输入软件盘,焦点在传进去的view上 * * @param view */public static void showSoftInput(Context context, View view) { if (view == null) { return; } view.requestFocus(); InputMethodManage原创 2016-09-28 10:15:57 · 706 阅读 · 0 评论 -
android属性动画总结
40-----80startValue endValue40m 80m 50mstartTime endTime currentTime属性动画:1.计算已完成动画时间分数f:(currentTime-startTime)/(endTime-startTime)。2.计算插针值(fraction):根据f,和自己的条件计算出fraction。原创 2016-09-25 23:32:16 · 432 阅读 · 0 评论 -
uiautomator中一些常用的方法
package com.sprd.uiautomator.util;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.Input原创 2016-02-25 17:19:55 · 4626 阅读 · 0 评论 -
UiAutoMator一些常用的方法
常用查找UiObject方法// 通过ID查找public static UiObject findById(String text)throws UiObjectNotFoundException {UiObject appBtn = new UiObject(new UiSelector().resourceId(text));return appBtn;}原创 2016-02-24 16:37:39 · 1248 阅读 · 0 评论 -
Android Studio使用build.gradle引入github开源库
一般只要在build.gradle中标签dependencies添加开源库,如下dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' // or 1.4-beta1 releaseCompile 'com.squareup.leakcanary:leakcanary-andr原创 2016-03-07 19:53:49 · 2465 阅读 · 0 评论 -
Intent的几种有关Activity启动方式和Activity和Task的的启动模式
1. Task是包含一系列Activity的堆栈, 遵循先进后出原则. 2. Task默认行为: (1) 前提: Activity A和Activity B在同一个应用中. 操作: Activity A启动开僻Task堆栈(堆栈状态: A), 在Activity A中启动Activity B(堆栈状态: AB), 按下BACK返回键(堆栈状态: A转载 2015-06-04 22:57:34 · 767 阅读 · 0 评论 -
targetSdkVersion和与target属性的区别
注:文本转载于:http://usenrong.iteye.com/blog/1488503AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别 在AndroidMenifest.xml中,常常会有下面的语句: 在project.properties中,会看到下面的语句:转载 2015-06-05 11:42:10 · 539 阅读 · 0 评论 -
Android Studio导入第三方类库的方法,在android Studio 1.2.11中
一.导入*.jar包文件很简单,将.jar包复制到新建的项目的libs目录中,如果你的项目乜有libs,可以自己手动建个,和src同一目录,比较简单就直接上图了,(1)复制.jar包到libs中。 (2)选择open Module Settings) (3)左边选择对应的项目,右边选择 Dependencies (4)点击原创 2015-06-05 13:33:27 · 677 阅读 · 0 评论 -
synchronized用于静态方法和普通方法区别
所有的非静态同步方法用的都是同一把锁——实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁,可是别的实例对象的非静态同步方法因为跟该实例对象的非静态同步方法用的是不同的锁,所以毋须等待该实例对象已获取锁的非静态同步方法释放锁就可以获取他们自己的锁。而所有的静态同步方法用的也是同一把锁——类对象本身,这两把锁是两个转载 2015-06-30 20:11:03 · 2290 阅读 · 0 评论 -
ListView常见优化
如果一个listView不做任何的优化,而且有很多的条目,当我们快速的拖动listView的界面的时候,就不断的GCGC(Garbage Collection )垃圾回收,当GC到某个时候就会(OOM)outofmemory内存溢出,应用程序也就会随之挂掉,产生这个问题的原因是什么呢?我们知道listView的特点是每产生一个条目就会调用一次getView方法,如果我们不进行优化,每一次调用都要执原创 2015-06-10 16:25:22 · 595 阅读 · 0 评论 -
java常用集合
Collection 集合接口 最上层List 元素可以重复,List: ArrayList Vector LinkedListVector先推出,ArrayList后推出Vector采用同步方式处理,性能低,但是线程安全,ArrayList采用异步方式处理,性能高,线程不安全。LinkedList基于链表的数据结构,对于新增和删除操作比较有优势,ArrayList对原创 2015-06-30 22:36:52 · 595 阅读 · 0 评论 -
android listview 异步加载图片并防止错位
防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证)。只可惜,Android Doc中并没有对DiskLruCache的用法给出详细的说明,而网上转载 2015-06-10 18:19:07 · 707 阅读 · 0 评论 -
Android技术积累:开发规范
书写规范1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进。另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式。3. 花括号不要单独一行,和它转载 2015-07-11 15:43:21 · 677 阅读 · 0 评论 -
TCP和Http的区别!我都搞懂了,你就别迷糊了!
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握转载 2015-06-14 15:55:38 · 12943 阅读 · 0 评论 -
Android中自定义控件获取text的宽高方式
paint = new Paint(Paint.ANTI_ALIAS_FLAG);(1)获取高度方式paint.setTextSize(subTitleTextSize); Paint.FontMetrics fm = paint.getFontMetrics(); int textHeight = (int) Math.ceil(fm.descent原创 2015-11-07 22:41:29 · 1547 阅读 · 0 评论 -
Android异常之Service启动Activity
转载于:http://bbs.51cto.com/thread-1133875-1.htmlAndroid异常之Service启动Activity在Activity中其中startActivity这个大家应该是非常熟悉的;那么从service里面调用startActivity话,会怎么样呢?会出现下面的异常:android.util.AndroidRuntimeExceptio转载 2015-06-03 20:36:12 · 1716 阅读 · 1 评论