![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 61
章鱼老李
这个作者很懒,什么都没留下…
展开
-
SharedPreference ANR优化
SharedPreference ANR优化Google 在设计之初为了方便开发者,实现了一套轻量级的数据持久化方案——SharedPreference(以下简称 sp),因为其简便的 API,方便的使用方式,得到开发者的青睐,对其依赖越来越重。在应用版本不断迭代的过程中发现 Google 说的轻量级的数据存储是有原因的,越是重量级的应用出现的 ANR 问题越严重。SP 导致 ANR 原因分析问题1:sp 文件创建以后,会单独的使用一个线程来加载解析对应的 sp 文件。但是当 UI 线程尝试访问 sp原创 2021-05-26 10:26:24 · 293 阅读 · 1 评论 -
Android viewpager嵌套使用
两个viewpager嵌套使用时,不希望内部viewpager滑动到最后一个继续左滑去引起外部viewpager滑动class KnowledgeViewPager(context: Context?, attrs: AttributeSet?) : ViewPager(context, attrs) { var mParentViewPager: ViewPager? = null override fun dispatchTouchEvent(ev: MotionEvent?):原创 2020-12-29 18:28:50 · 484 阅读 · 0 评论 -
自定义控件收藏
1.TastyToasthttps://github.com/yadav-rahul/TastyToast 2.MaterialSearchBarhttps://github.com/mancj/MaterialSearchBar原创 2018-05-09 10:37:37 · 229 阅读 · 0 评论 -
DialogFragment.show()遇到的坑
DialogFragment.show()遇到的坑昨天app发版上线,测试和我说注册页面点击页面按钮时崩溃了,我说不可能啊,注册页面代码我都N年没动过了,怎么会不能用了,我调试了一下,看了下日志,发现下面这个错误:04-04 08:45:37.726 30098-30098E/AndroidRuntime: FATAL EXCEPTION: main Process: co...原创 2018-04-04 10:58:52 · 12846 阅读 · 0 评论 -
Android 子线程修改UI方法对比
Android 子线程修改UI方法对比在Android 开发中经常是在子线程中获取数据或者处理数据,然后修改UI显示,修改UI一般有四种方法: 1.Handler()的handleMessage()和handler.sendMessage(msg) 2.handler.post(runnable)和handler.postDelayed(runnable,milliseconds) 3...原创 2018-04-09 15:13:55 · 416 阅读 · 0 评论 -
序列化Serializable和Parcelable的理解和区别
一、android为什么要序列化?什么是序列化,怎么进行序列化why为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。what什么是序列化 —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储...转载 2018-03-06 09:43:03 · 298 阅读 · 0 评论 -
Android APP启动时出现白屏或者黑屏解决方案
1、为什么APP启动时会出现白屏或者黑屏?当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,...转载 2018-02-24 08:58:05 · 1015 阅读 · 0 评论 -
ButterKnife框架原理和使用
大部分Android开发者应该都知道@JakeWharton 大神的ButterKnife注解库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码。 ButterKnife项目的主页在这里:http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public class Exam转载 2017-11-29 15:11:53 · 298 阅读 · 0 评论 -
Android 数据持久化技术(即数据存储方式)
在讨论数据持久化技术之前我们先了解几个概念?什么是瞬时数据:存储在内存当中,有可能会因为程序的关闭或其他原因导致内存被收回而丢失的数据。 为什么采用数据持久化技术:为了保证关键数据在程序退出时不被丢失。 什么是数据持久化技术:将内存中的瞬时数据保存到存储设备中,保证手机在关机的情况下数据仍然不会丢失。 安卓提供了三种方式用于简单的数据持久化功能:文件储存,SharedPreference存储,数据...转载 2017-12-13 09:25:49 · 499 阅读 · 0 评论 -
Android加密算法
基本需求及概念随着Internet网的广泛应用,信息安全问题日益突出,以数据加密技术为核心的信息安全技术也得到了极大的发展。目前的数据加密技术根据加密密钥类型可分私钥加密(对称加密)系统和公钥加密(非对称加密)系统。对称加密算法是较传统的加密体制,通信双方在加/解密过程中使用他们共享的单一密钥,鉴于其算法简单和加密速度快的优点,目前仍然是主流的密码体制之一。最常用的对称密码算法是数转载 2017-11-24 15:37:43 · 251 阅读 · 0 评论 -
sqlite数据库加密方案
针对sqlite数据库文件,进行加密。现有两种方案如下1.对数据库中的数据进行加密。2.对数据库文件进行加密两种加密方式的优缺点,比较如下:一、对数据库中的数据进行加密优点:1.实现数据加密快速,只需添加两个方法一是:对明文数据进行加密返回密文数据二是:对密文数据进行解密返回明文数据2.程序无需进行太大变动,仅在对数据进行添加,修改,删除,查询时。针转载 2017-11-24 15:34:01 · 9756 阅读 · 1 评论 -
万能Interface实现Fragment之间的通讯
实现两个Fragment之间的通讯方法有很多种,如:EventBus:使用方便,但其使用的是反射原理,会有稍微的延迟,并且他人维护不方便;static静态变量:使用方便,但是,每个static变量都会占用一块内存区,Android系统分配给每个App的内存是有限的(63M),过多很容易造成App内存溢出;广播Broadcast Receiver:Android的广播是有限制转载 2017-11-21 11:15:21 · 451 阅读 · 1 评论 -
IntentService使用详解和实例介绍
IntentService定义 IntentService继承与Service,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。IntentService在onCreate()函数中通过HandlerThread单独开启一个线程来依次处理所有Intent请求对象所对应的任务。 这样以免事务处理阻塞主线程转载 2017-11-03 16:36:09 · 386 阅读 · 0 评论 -
AsyncTask
前言什么是AsyncTask,相信搞过Android开发的朋友们都不陌生。AsyncTask内部封装了Thread和Handler,可以让我们在后台进行计算并且把计算的结果及时更新到UI上,而这些正是Thread+Handler所做的事情,没错,AsyncTask的作用就是简化Thread+Handler,让我们能够通过更少的代码来完成一样的功能,这里,我要说明的是:AsyncTask只是原创 2017-06-13 16:19:25 · 434 阅读 · 0 评论 -
Android EditText控制小数点位数及输入限制工具类
项目开发中总是遇到输入框小数点限制的问题 所以就自己封装了一个工具类 而且还限制了错误输入的问题原创 2017-06-12 12:11:49 · 635 阅读 · 0 评论