android
文章平均质量分 79
IT刘小牛
爱生活,爱运动。。。。。。。。
展开
-
安卓常用框架
一、快速开发框架XSnow 基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展2.MVPArms一个整合了大量主流开源项目高度可配置化的 Android MVP 快速集成框架(包括Mvp、 Dagger2、RxJava、RxAndroid、Rxlifecycle、RxCache、RxPermissions、RxErroHandler、Retrofit、Okht原创 2022-04-21 08:51:16 · 4982 阅读 · 1 评论 -
java.lang.NoSuchMethodError: No static method dispatch安卓问题解决
搞了一上午终于解决了,分享一下:问题重现: 当Activity跳转到另一个Activity时,卡顿后白屏到重新启动app 错误提示如下:java.lang.NoSuchMethodError: No static method dispatchUnhandledKeyEventPre(Landroid/view/View;Landroid/view/KeyEvent;)Z in class Landroid/support/v4/view/ViewCompat; or its super clas原创 2021-09-17 11:13:04 · 1269 阅读 · 0 评论 -
安卓内存泄漏分析2021
背景Android代码里面,一些地方代码编写不当,存在内存泄漏的问题,所以决定写一下分析思路,相互学习。内存泄漏一个不会被使用的对象,因为另一个正在使用的对象持有该对象的引用,导致它不能正常被回收,而停留在堆内存中。内存泄漏的危害最坏的情况,App可能会因为大量的内存泄漏而导致内存耗尽,引发Crash,如果内存未耗尽,App也会犹豫内存空间不足,出现频繁的GC(垃圾回收),每次一出GC都是非常耗时的阻塞性操作,会造成设备非常严重的卡顿,给用户的体验就是,手机无论做什么操作,都是卡的,这也原创 2021-02-20 09:31:03 · 195 阅读 · 0 评论 -
activity管理器一次退出所有activity
退出所有Activity有很多方法,这是自定义一个Activity管理器,来管理所有已打开的Activity,要退出的时候再通过这个管理器来退出所有Activity,方便实用原创 2017-08-07 17:00:54 · 541 阅读 · 1 评论 -
安卓沉浸式状态栏
近几天准备抽空总结Android一些系统UI的实践使用,于是开始动手建了一个库 AndroidSystemUiTraining ,边撸代码边写总结今天开写第一篇,对 Translucent System Bar 的实践做一些总结。说起 Translucent System Bar 的特性,可能有些朋友还比较陌生,这里做一下简单的介绍。Android 4.3豌豆荚看上图,An转载 2017-04-06 11:25:10 · 465 阅读 · 0 评论 -
ToorBar详解大全
ok好的 直接来说啊!我们用studio创建一个新的项目 创建时选择有侧滑菜单的这个 然后打开项目 toolbar可能不是我们想要的效果 那么让我们来灵活处理一下吧在 MainActivity.java 中加入 Toolbar 的声明:Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportA原创 2017-04-18 17:02:31 · 1646 阅读 · 1 评论 -
CollapsingToolbarLayout使用详解
我非常喜欢Material Design里折叠工具栏的效果,bilibili Android客户端视频详情页就是采用的这种设计。这篇文章的第二部分我们就通过简单的模仿bilibili视频详情页的实现来了解下CollapsingToolbarLayout的使用。文章的第三部分介绍了CollapsingToolbarLayout与TabLayout的组合使用。有基础的朋友可以直接跳过第一部分。转载 2017-04-17 17:50:52 · 3213 阅读 · 2 评论 -
Eclipse快捷键大全(史诗级)
Eclipse快捷键大全我的总结:用了一段时间的Studio突然发现Eclipse中的快捷键都快忘的差不多了 有点记混乱了 。。。让我们重新再次回顾一下那些年我们用过的Eclipse快捷键吧!!!如有不一样可自行修改一下哈哈常用Ctrl+1 快速修复 (最经典的快捷键,就不用多说了)Ctrl+2 + L 快速生成变量(名字 及所属类型)Ctrl+D: 删除当前行原创 2017-03-14 09:54:33 · 621 阅读 · 1 评论 -
安卓软键盘关闭问题详解大全
安卓软件盘关闭的方法还有很多种(再没做这个之前我也只知道方法一!)但是方法一不是我想要的效果 我想退出当前activity的时候如果软件盘打开则关闭,如果软件盘关闭则还是关闭,ok,我们来看这些可有可无虚无缥缈的文档,卡。。。。。头疼有木有 me too好多木用的方法啊 CSDN里面会查阅到很多的资料关于关闭软键盘的 经我亲测!都木有用(当然了,弟子才疏学浅,出入师门,也有可原创 2016-12-22 15:42:17 · 1154 阅读 · 0 评论 -
加密算法
sha_1public static String getSha1(String str){ if (null == str || 0 == str.length()){ return null; } char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',原创 2016-12-21 11:18:03 · 438 阅读 · 0 评论 -
安卓高德地图的使用
最近项目用到高德地图,因此来写一篇文章理一下高德的使用步骤方法,希望对大家有用!1.注册+配置废话不多说,要使用高德地图首先要去高德开放平台注册成为开发者(http://lbs.amap.com/), 注册成为高德开发者需要分三步:第一步,注册高德开发者;第二步,去控制台创建应用;第三步,获取Key(见下图,注意看命名规范,SHA1值得获取网上有!很简单)。获取key原创 2016-11-25 10:46:30 · 2635 阅读 · 0 评论 -
Android 接入微信支付宝支付
前期准备微信开放平台注册账号,创建应用,开通微信支付,这些大家都会的。微信商户平台APP支付文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1 ,如果仅按照文档来,保证每次支付结果都是-1,对,只有-1,没有任何其他信息,不得不说,坑比。APP支付时序图大概了解下支付流程:接入SD原创 2016-11-25 10:21:10 · 574 阅读 · 0 评论 -
获取版本号 版本名称
//获取包管理器PackageManager packageManager = getPackageManager();try { //0获取所有信息 包名:(例如)com.baidu.app PackageInfo packageInfo = packageManager.getPackageInfo("包名", 0); int versionCode = pack原创 2016-11-24 16:04:50 · 367 阅读 · 0 评论 -
实现Android搜索功能 显示清除历史搜索记录
本文主要为大家分享了Android实现搜索功能,并且可以实时显示搜索的历史记录,根据输入的内容去模糊查询,供大家参考,界面图如下。 本案例实现起来也非常的简单,所以可以直接拿来嵌入项目中使用,主要涉及到的知识点:1、数据库的增删改查操作2、监听软键盘回车按钮设置为搜索按钮3、使用TextWatcher( )进行实时筛选4、已搜索的关键字再次搜索不会重复添加到数据库既转载 2016-12-12 19:36:58 · 1255 阅读 · 0 评论 -
安卓常用基本权限总结
访问网络Android.permission.INTERNET,访问网络连接,可能产生GPRS流量 android.permission.CHANGE_WIFI_STATE Wifi 改变状态 android.permission.ACCESS_WIFI_STATE WiFi 状态 android.permission.ACCESS_NETWORK_STATE 网络状态原创 2016-11-29 15:45:18 · 1631 阅读 · 0 评论 -
Android Studio项目中需要忽略的内容
Android Studio创建的Android项目一般需要忽略(说明一下,如果不忽略的话会导致studio出现个中奇怪问题 如打包文件不能用,可能是由于升级过程中把响应的配置修改掉导致 所以项目中最好最好把这些全部忽略掉,省去很多不必要的麻烦)1、.idea文件夹2、.gradle文件夹3、所有的build文件夹4、所有的.iml文件5、local.propertie原创 2016-10-28 15:35:43 · 630 阅读 · 0 评论 -
安卓状态栏问题详解大全(沉浸式状态栏)
1.解决顶部问题: 用这两个属性 使界面布局放在状态栏的下面 避免与状态栏重合造成actionbar太过于靠上!!!(如上图顶部效果)android:clipToPadding="true"android:fitsSystemWindows="true"2安卓透明状态栏和底部操作栏:在setContentView()前面加上以下代码。(解决底部重叠的问题) 具体颜色自行修原创 2017-04-06 11:23:40 · 685 阅读 · 0 评论 -
SnackBar使用详解
Snackbar是Android Support Design Library库中的一个控件,可以在屏幕底部快速弹出消息,比Toast更加好用。本文对原生Snackbar进行了修改,使其更加灵活。前瞻:1)SnackBars 提供了一个轻量级的反馈操作,他们在屏幕的底部显示一条简短的信息,如果是较大的设备就显示在左下角。SnackBar出现在屏幕中所有其他元素的上方,同一时间只能显示一条S原创 2017-04-17 15:42:54 · 3144 阅读 · 0 评论 -
常见内存泄漏及检测(面试)
什么是内存泄漏?有些对象只有有限的生命周期。当它们的任务完成之后,它们将被垃圾回收。如果在对象的生命周期本该结束的时候,这个对象还被一系列的引用,这就会导致内存泄漏。随着泄漏的累积,app将消耗完内存。内存泄漏造成什么影响?它是造成应用程序OOM的主要原因之一。由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系...转载 2019-02-15 09:57:32 · 611 阅读 · 0 评论 -
MpAndroidChart简单用法 属性总结
public class LineChartUtils { private static final String TAG = "LineChartUtils"; private final FormatUtils formatUtils; private LineChart lineChart; private Handler mHandler = new H...原创 2018-11-16 11:19:19 · 716 阅读 · 0 评论 -
org.springframework.http.converter.GenericHttpMessageConverter
解决:安卓 org.springframework.http.converter.GenericHttpMessageConverterStudio疯掉了!!!解决方案:将builder.gradle中的依赖如api annotationProcesso implemention compile全部删除 再重新导入即可...原创 2018-08-03 16:00:36 · 1507 阅读 · 0 评论 -
RxJava详解
RxJava 到底是什么一个词:异步。RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJav...转载 2018-05-17 17:07:05 · 382 阅读 · 0 评论 -
杂乱整理待拓展
简单的动画旋转 (drawable里面直接创建 用src去引用该资源)rotate_data_loding.xml<?xml version="1.0" encoding="utf-8"?><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" and...原创 2018-05-09 14:56:53 · 335 阅读 · 0 评论 -
安卓SQLite简介
一.SQLite的介绍1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有O...转载 2018-03-19 10:28:52 · 694 阅读 · 0 评论 -
2018安卓面试题
基础知识 – 四大组件(生命周期,使用场景,如何启动)java基础 – 数据结构,线程,mvc框架通信 – 网络连接(HttpClient,HttpUrlConnetion),Socket数据持久化 – SQLite,SharedPreferences,ContentProvider性能优化 – 布局优化,内存优化,电量优化安全 – 数据加密,代码混淆,WebView/Js调用,httpsUI–转载 2018-01-12 15:25:36 · 1082 阅读 · 0 评论 -
xUtils3 详解大全及Demo
Github地址为:https://github.com/wyouflf/xUtils3xUtils3简介xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展:稳定的基石: AbsTask和统一的回调接口Callback, 任何异常, 即使你的回调方法实现有异常都会进入onError, 任何情况原创 2017-09-12 23:22:49 · 1209 阅读 · 0 评论 -
安卓回调详解--CallBack
前几天有个大学师弟问我回调是怎么回事,这是我想写下这文章的主要原因。我不想堆砌原理和拗口的文字,只想简单按照个人认为比较好理解的方式进行描述。记得在学习到回调的时候,总是觉得回调是个很奇怪的东西,确实,你要往深里说,确实很多可以说,但是作为开发者,我觉得个人对一个技术点或者说一个知识点有个简单的好理解的认知很重要的,深的需要再说,有个总体认知很重要。一、先上结论回调就是A和B有合作关系转载 2017-09-20 16:07:39 · 1475 阅读 · 0 评论 -
2017安卓面试题大全
JAVA 相关 1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它? 静态内部类:使用static修饰的内部类 内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类 匿名内部类:使用new生成的内部类 因为内部类的产生依赖于外部类,持有的引用是类名.this 2.Java中try cat转载 2017-09-13 09:56:59 · 4237 阅读 · 0 评论 -
androidStudio中build.gradle配置文件详解
build.gradle配置参数详解//声明是Android程序apply plugin: 'com.android.application'android {//程序在编译的时候会检查lint,有任何错误提示会停止build,我们可以关闭这个开关 lintOptions { abortOnError false //即使报错也不会停止打包原创 2017-06-07 16:02:43 · 3878 阅读 · 0 评论 -
android中dialog(自定义dialog)的使用方法!!!
androidstudio中dialog是直接创建的 非自定义真对以前的方法!先看自定义对话框,就是让对话框模样按照自己想要的样式来显示。 开撸!根据自己的要求布局xml;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="原创 2016-10-28 10:55:55 · 1690 阅读 · 0 评论 -
protobuffer 编译
把文件复制到proto下先4双击 再1 打开cmd 再protoc.exe --java_out ./ (要编译的文件名)2再3中找到对应的文件放到android中记得要修改2的包名跟项目中的一致!!!!当然了先装上这个proto玩意er!再就是项目要有jar包(这就不说了)原创 2016-09-23 14:21:43 · 543 阅读 · 0 评论 -
volley的用法(数据库网络请求框架 )
Volley的用法集AsyncHttpClient和ImageLoader优点于一身,适合数据请求频繁但是数据量不大的网络请求框架。不适合大数据的请求,比如文件下载。Volley请求三步:1、创建一个RequestQueue对象2、创建一个request(StringRequest -- 返回String、JsonReques -- 返回Jsont、ImageRequest --原创 2016-02-28 00:50:57 · 1869 阅读 · 0 评论 -
LruCache的实现原理(图片三级缓存)
官方建议使用lrucache进行内存缓存。Lrucache底层实际是维护的一个linkedHashMap集合(他是hashmap的一个子类,可以保证存入和取出顺序的集合,与hashmap不同的是他是一个双向链表从Android2.3以后,系统GC操作更加频繁,所以软引用和弱引用的资源很容易被回收。Android的结构,内部会定义两个属性分别为before和after,用于记录元素的位置;而hasp原创 2016-02-28 00:41:25 · 5199 阅读 · 0 评论 -
okHttp的用法
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。关于HttpURLConnection和HttpClient的选择>>官方博客尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可原创 2016-02-27 12:51:39 · 611 阅读 · 0 评论 -
Android RelativeLayout属性
android:layout_above 将该控件的底部置于给定ID的控件之上;android:layout_below 将该控件的底部置于给定ID的控件之下;android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;android:layout_alig原创 2016-02-27 12:03:26 · 448 阅读 · 0 评论 -
安卓屏幕适配详解
1.先说要怎么做,后面在慢慢讲解:1.单位全部用dp,优先使用包裹内容和填充父窗体和权重来完成布局。 2.通过dimens文件来适配,需要三套,不考虑横屏 2.1 默认的dimens.xml 放按hdpi适配的参数; 2.2 hdpi的dimens.xml 放按hdpi适配的参数; 2.3 xhdpi的dimens.xml原创 2016-02-27 11:53:57 · 633 阅读 · 0 评论 -
APK瘦身记,如何实现高达53%的压缩效果
三月不减肥,四月徒伤悲,小文一篇让您的app瘦成一道闪电,化为app store上最亮的星。以此文献给唯产品与瘦身不可辜负的亲们!1.我是怎么思考这件事情的APK是Android系统安装包的文件格式,关于这个话题其实是一个老生常谈的题目,不论是公司内部,还是外部网络,前人前辈已经总结出很多方法和规律。不过随着移动端技术近两年的飞速发展,一些新的思维方式和优化方法也逐渐涌现和原创 2016-03-31 21:49:20 · 660 阅读 · 0 评论 -
Android开发之触摸事件处理机制详解
android触碰消息传递机制用户的每次触碰(onClick,onLongClick,onScroll,etc.)都是由一个ACTION_DOWN+n个ACTION_MOVE+1个ACTION_UP组成的,用户触碰必先有个ACTION_DOWN响应,用户触碰结束必然会有个ACTION_UP。(当然如果在途中被拦截,就可能不会有了!)那么View是如何分发消息和拦截消息呢?1原创 2016-03-31 01:23:59 · 638 阅读 · 0 评论 -
如何让android的service一直在后台运行
1. 把service和activity分开,让service开机启动。设置一个broadcast receiver接受开机信号, 使用RECEIVE_BOOT_COMPLETED的permission, 然后启动service。activity启动后绑定到service上, 通过ipc机制通信,acitivity结束后松绑。注意安装后要手动启动service,不会自动启动,之后重原创 2016-03-30 19:09:52 · 17983 阅读 · 0 评论 -
android数据存储的五种方式
1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据下面详细讲解这五种方式的特点第一种: 使用SharedPreferences存储数据 适用范围:保存少量的数据,且这些数据的格式非常原创 2016-03-18 14:58:56 · 585 阅读 · 0 评论