- 博客(34)
- 资源 (3)
- 问答 (5)
- 收藏
- 关注
原创 Android开发中的ViewModel
在Android开发中,随着应用复杂度的提升,如何有效管理UI组件的生命周期和数据成为了一个挑战。它允许我们存储和管理与UI相关的数据,同时在配置更改(如屏幕旋转)时,保持数据的持续性。当Activity或Fragment被销毁时,关联的ViewModel会暂停数据更新,直到新的Activity或Fragment重新绑定并请求数据。在Android应用开发中,ViewModel作为架构组件之一,扮演着管理UI数据和生命周期的关键角色。负责创建和维护ViewModel的实例。
2024-09-28 21:36:49 590
原创 深入理解LiveData:Android生命周期感知的数据持有类
LiveData 是构建响应式 UI 的强大工具,它通过生命周期感知和数据观察模式,确保了数据与视图的同步更新。合理使用 LiveData 可以提高应用的稳定性和性能。
2024-09-28 11:47:18 404
原创 探索 Android DataBinding:实现数据与视图的完美融合
DataBinding 是 Android 框架提供的一个数据绑定库,它允许你将数据与视图组件进行绑定,实现数据的自动更新和视图的响应式布局。通过 DataBinding,你可以减少手动操作视图的代码,提高代码的可读性和可维护性,同时也能够更好地实现 MVVM(Model-View-ViewModel)设计模式,提高应用的模块化和可测试性。DataBinding 的核心概念是数据绑定表达式,它是一种特殊的语法,允许你在 XML 布局文件中使用表达式来绑定数据到视图组件上。
2024-09-26 22:02:29 1123
原创 深入剖析 Android Lifecycle:构建高效稳定的应用
在某些情况下,我们可能需要自定义一个类来作为,例如创建一个自定义的ViewGroup或View,并让它具有生命周期管理的能力。要实现自定义创建 LifecycleRegistry 对象在自定义类的构造函数中,创建一个对象来管理生命周期状态。实现 getLifecycle () 方法让自定义类实现接口,并返回创建的对象。发送生命周期事件在自定义类的生命周期方法中,通过对象发送相应的生命周期事件。以下是一个简单的自定义@Override在上述示例中,我们创建了一个自定义的View。
2024-09-26 18:51:29 1962
原创 深入探秘 WorkManager:Android 异步任务管理的强大工具
WorkManager 是 Google 提供的一个异步任务管理框架,它的主要目标是帮助开发者更轻松地管理应用中的异步任务,确保任务在合适的时间和条件下执行,同时提供了强大的功能和灵活性,以满足各种应用场景的需求。WorkManager 的设计理念是将异步任务的管理与应用的生命周期解耦,使得任务的执行不受应用是否处于前台或后台的影响。
2024-09-25 22:29:35 1422
原创 深入理解 RXJava:构建响应式编程的强大框架
RXJava 是一个基于 Java 实现的响应式编程库,它提供了一种简洁、灵活的方式来处理异步数据和事件。通过 RXJava,你可以将复杂的异步操作转化为可管理的数据流,从而更方便地进行数据的处理和传递。RXJava 的核心概念包括 Observable(可观察者)、Observer(观察者)和 Subscriber(订阅者)。Observable 负责发出数据和事件,Observer 和 Subscriber 则负责接收和处理这些数据。
2024-09-25 18:58:36 791
原创 Java APT实战,现实一个简单的ButterKnife
APT(Annotation Processing Tool)是 Java 提供的一种工具,它能够在编译时期检查源代码中的注解,并根据这些注解生成相应的代码。这一过程有助于自动化编码任务,提升开发效率。在 APT 框架中,是核心类,它规定了注解的处理方式。当 APT 扫描源文件时,它会调用实现了类的process()方法,以便捕获和处理注解。
2024-09-23 12:10:51 827
原创 掌握Android开发新趋势:Jetpack与现代架构技术全解析
随着Android开发技术的不断进步,Jetpack和现代架构技术已成为构建高效、可维护应用的关键。本文将为您介绍一套全面的学习资料,包括大纲、PDF文档、源代码以及学习视频,帮助您深入理解Jetpack核心库、架构组件以及现代开发工具。
2024-09-21 18:55:59 653
原创 深入Android UI开发:从自定义View到高级布局技巧的全面学习资料
什么是自定义View:了解自定义View的基本概念和重要性,为深入学习打下基础。高级UI技巧:探索高级UI设计的技巧,提升应用的视觉效果。UI总结:总结UI开发的关键点和最佳实践,为未来的项目开发提供指导。
2024-09-20 16:43:30 845
原创 深入探索Android开发之Kotlin核心技术学习大全
Android作为全球最流行的移动操作系统之一,其开发技能的需求日益增长。本文将为您介绍一套专为Android开发者设计的Kotlin核心技术学习资料,包括详细的学习大纲、PDF文档、源代码以及配套视频教程,帮助您从Kotlin基础到高级特性,再到Android开发,全面提升您的开发技能。1.Kotlin基础语言学习。2.Kotlin实战阶段项目。
2024-09-19 17:24:05 612
原创 深入探索Android开发之Java核心技术学习大全
探索Java在Android开发中的深度应用,本篇博客文章为您精心整理了一系列Java核心技术学习资料,旨在帮助您从基础到高级全面掌握Android开发技能,这套学习资料不仅包含详细的PDF文档和源代码,还有配套视频教程,确保您能够系统地学习和实践。立即下载资料,与同行一起成长,成为顶尖的Android开发者。
2024-09-18 22:28:38 1054
原创 LinkedBlockingQueue和ArrayBlockingQueue中常用的方法
一.插入1.add:add方法在添加元素的时候,若超出了度列的长度会直接抛出异常。2.put:put方法,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素。3.offer:offer方法在添加元素时,如果发现队列已满无法添加的话,会直接返回false。二.取出1.remove:若队列为空,抛出NoSuchElementException异常。2.take:若队列为空,发生阻...
2018-05-14 08:25:05 629
原创 自定义dialog
经过一下几步骤:1.创建一个类CustomDialog继承Dialog,一共有三个构造方法 (1)CustomDialog(Context context){} (2)CustomDialog(Context context, int themeResId) 注解:themeResId表示CustomDialog使用的主题,后面会详细讲解(3)CustomDial
2016-11-01 16:53:14 446
原创 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 683
原创 webView常见漏洞以及解决方法
1.Android 4.4 之前的版本 webkit 中内置了”searchBoxJavaBridge_”接口。攻击者可通过访问searchBoxJavaBridge_接口利用该漏洞执行任意Java代码。解决方法:webView.removeJavascriptInterface("searchBoxjavaBridge_");2.Android 4.4 之前的版本 WebView
2016-10-25 14:14:58 2393
原创 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 654
原创 android属性动画总结
40-----80startValue endValue40m 80m 50mstartTime endTime currentTime属性动画:1.计算已完成动画时间分数f:(currentTime-startTime)/(endTime-startTime)。2.计算插针值(fraction):根据f,和自己的条件计算出fraction。
2016-09-25 23:32:16 390
原创 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 2347
原创 UiAutomator的使用过程
1.创建Java Project项目UiAutoTest,导入sdk目录下的 android.jar和uiautomator.jar库文件2.在当前项目UiAutoTest中创建一类 FreeTest.java继承UiAutomatorTestCase3.在FreeTest.java中开始编写case,case方法名以test开头4.创建build命令 android create
2016-02-29 09:42:49 742
原创 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 4512
原创 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 1207
原创 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 1500
转载 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 638
原创 java常用集合
Collection 集合接口 最上层List 元素可以重复,List: ArrayList Vector LinkedListVector先推出,ArrayList后推出Vector采用同步方式处理,性能低,但是线程安全,ArrayList采用异步方式处理,性能高,线程不安全。LinkedList基于链表的数据结构,对于新增和删除操作比较有优势,ArrayList对
2015-06-30 22:36:52 571
转载 synchronized用于静态方法和普通方法区别
所有的非静态同步方法用的都是同一把锁——实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁,可是别的实例对象的非静态同步方法因为跟该实例对象的非静态同步方法用的是不同的锁,所以毋须等待该实例对象已获取锁的非静态同步方法释放锁就可以获取他们自己的锁。而所有的静态同步方法用的也是同一把锁——类对象本身,这两把锁是两个
2015-06-30 20:11:03 2185
转载 TCP和Http的区别!我都搞懂了,你就别迷糊了!
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握
2015-06-14 15:55:38 12777
转载 android listview 异步加载图片并防止错位
防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证)。只可惜,Android Doc中并没有对DiskLruCache的用法给出详细的说明,而网上
2015-06-10 18:19:07 677
原创 ListView常见优化
如果一个listView不做任何的优化,而且有很多的条目,当我们快速的拖动listView的界面的时候,就不断的GCGC(Garbage Collection )垃圾回收,当GC到某个时候就会(OOM)outofmemory内存溢出,应用程序也就会随之挂掉,产生这个问题的原因是什么呢?我们知道listView的特点是每产生一个条目就会调用一次getView方法,如果我们不进行优化,每一次调用都要执
2015-06-10 16:25:22 549
转载 恐惧会让你成为一个更糟糕的程序员
有没有人写过关于恐惧+编程方面的文章?(这种害怕做出重要改变的思想如何使你成为一个更差的程序员?)以及我觉得在小心翼翼(优++)和恐惧(让你不敢去做一些必要工作)之间有一条重要的分界线。然后各种有趣的讨论接踵而至。我发现,当我们害怕担忧的时候,思想就会趋于保守,也不敢做任何改动,生怕有个万一。但是这会导致软件变得更糟!它实际上是另一种灾难。如果你害怕做出任何改变
2015-06-08 19:09:25 591
原创 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 636
转载 targetSdkVersion和与target属性的区别
注:文本转载于:http://usenrong.iteye.com/blog/1488503AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别 在AndroidMenifest.xml中,常常会有下面的语句: 在project.properties中,会看到下面的语句:
2015-06-05 11:42:10 508
转载 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 728
转载 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 1622 1
Kotlin编程全攻略:从基础到实战项目的系统学习资料
2024-09-21
Jetpack与现代架构技术全解析资料
2024-09-21
如何获取getevent的输出,并且记录到文件中?使用python操作
2016-01-04
python怎么调用repo命令,执行文件push到服务器上?
2015-11-26
android如何知道用户在设置中的修改
2015-09-01
java基本类型的包装集作为参数传递的是值而不是引用
2015-06-18
android studio运行出错怎么解决??
2015-05-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人