Android
文章平均质量分 86
xytong1991
这个作者很懒,什么都没留下…
展开
-
Package manager has died
getPackageManger 是通过binder通信的,最大通信是1M,而且这个binder通信是系统整个的,也就是当前整个手机APP所有应用同一个时刻,或者同一个时间内 进行通信 超过了IM就会crash.而如果这时候恰巧在用getPackageManager()做事情,就会提示Package manager has died。 平常网上获取app 相关信息都...原创 2019-01-09 16:43:46 · 1485 阅读 · 0 评论 -
内存泄漏
简介编辑内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况...转载 2018-03-16 18:16:48 · 257 阅读 · 0 评论 -
Android中常见的内存泄漏
我们经常会在不经意间写出造成内存泄漏的代码,往往在代码上很难查出来。但是我们可以通过一些辅助工具来检测是否存在内存泄漏,比如通过AndroidStudio的monitors来查看内存的变化情况,或者是通过开源框架《LeakCanary》来检测。本文主要是从网络中搜索汇总一些常见的内存泄漏,一方面自己应对校招,另一方面以后自己写代码时也会注意这些问题。当然了,还有一方面就是方便大家~1 Activi...转载 2018-03-16 18:12:15 · 114 阅读 · 0 评论 -
内存泄漏工具LeakCanary
1.添加依赖:debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' 用法监控 Activity 泄露我们经常把 Activity 当作为 Context 对象使用,在不同场合由各种对象...转载 2018-03-16 17:59:13 · 293 阅读 · 0 评论 -
WebVuew性能优化之内存泄漏
WebView的内存泄漏处理方式有两种,分别是开启独立的web进程、不在xml里面声明,而是直接代码new个对象,传入application context防止activity引用滥用,并反射回收第一、开启独立的web进程 1.1 在manifest配置如下: <activity android:name="com.example.de...原创 2018-03-16 14:55:38 · 1086 阅读 · 0 评论 -
AIDL的使用
AIDL(Android 接口定义语言)利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工作,因此 Android 会使用 AIDL 来处理。 注:①IPC:进程间通信(In...原创 2018-03-02 16:55:11 · 199 阅读 · 0 评论 -
WebVuew性能优化之页面加载速度优化
页面加载速度优化影响页面加载速度的因素有非常多,我们在对 WebView 加载一个网页的过程进行调试发现,每次加载的过程中都会有较多的网络请求,除了 web 页面自身的 URL 请求,还会有 web 页面外部引用的JS、CSS、字体、图片等等都是个独立的 http 请求。这些请求都是串行的,这些请求加上浏览器的解析、渲染时间就会导致 WebView 整体加载时间变长,消耗的流量也对应的真多。接下来...转载 2018-03-16 14:00:10 · 6176 阅读 · 0 评论 -
ButterKnife框架的使用
一、Android Studio 安装ButterKnife插件 首先用快捷键Ctrl+Alt+S调出下图界面,并安装图中的插件ButterKnife二、添加gradle中的配置信息在app的build.gradle中添加如下内容: apply plugin: 'android-apt' compile 'com.jakewharton:butterknife:8.8....原创 2018-02-23 17:58:31 · 146 阅读 · 0 评论 -
ndk入门
项目git地址:https://github.com/lantian0314/ndkDemo第一、安装与配置1、快捷键Ctrl+Alt+Shift+S调出如下界面,本地有下载好的可以直接找到位置,没有的可以点击download下载,导入成功,在local.properties文件夹自动生成路径。NDK配置下载完成后,需要在gradle.properties文件加一行 android.u...原创 2018-03-02 14:14:14 · 202 阅读 · 0 评论 -
Gradle打包配置
第一、创建生成钥匙选择“Build”——“Generate Sign APK”,生成钥匙第二、生成签名的APK生成签名的APK有两种方式,一种是手动生成APK,一种是通过配置build.gradle来生成1.手动生成选择“Build”——“Generate Sign APK”,生成钥匙2.自动生成快捷键Ctrl+Alt+Shift+S 按照下图配置3.配置完成,build.gradle会生成文件s...原创 2018-03-05 10:48:58 · 1290 阅读 · 0 评论 -
Android性能优化总结
Android对于性能优化方面主要有一下几方面理解:第一、页面的绘制简化页面UI结构,复杂的UI布局会导致大量View重叠,出现过度绘制的可能性比较大,要避免布局嵌套过多,例如一般情况下,优先使用LinearLayout布局。复用背景色,例如如果父布局和子View背景色是相同的,只需要父布局设置背景色即可,子View不用设置。第二、布局的优化布局的选择,能满足需求的情况下优先选择LinearLay...原创 2018-03-12 15:20:26 · 220 阅读 · 0 评论 -
html5之IONIC框架的使用
第一、下载node包下载地址:https://nodejs.org/dist/v9.7.1/node-v9.7.1-x64.msi。第二、安装cordova和ionic1.在开始菜单找到2.打开后就进入命令行环境了,执行:npm install -g cordova ionic3.创建ionic项目1.找一目录,执行:ionic start myApp tabs 2.给myApp添加到Androi...原创 2018-03-05 15:41:43 · 608 阅读 · 0 评论 -
android避免decodeResource图片时占用太大的内存
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的sourc...原创 2019-01-09 15:44:41 · 1225 阅读 · 0 评论 -
多进程Application被初始化多次问题
在Android中,如果有新进程创建,由于进程本身需要一个Application,可以用下面的方法区分是否应该进行初始化private fun shouldInit(): Boolean { try { val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val ...原创 2019-01-11 15:37:07 · 1289 阅读 · 0 评论 -
Android 8.0中的一些更改
前言Google Play应用市场对于应用的targetSdkVersion有了更为严a格的要求。从 2018 年 8 月 1 日起,所有向 Google Play 首次提交的新应用都必须针对 Android 8.0 (API 等级 26) 开发; 2018 年 11 月 1 日起,所有 Google Play 的现有应用更新同样必须针对 Android 8.0。以下记录了我们升级targe...转载 2018-12-21 16:38:40 · 280 阅读 · 0 评论 -
Android 7.1新特性——长按出现快捷方式
简介Android 7.0版本有一个新特性:如果app支持,可以通过长按app图标出现一些快捷操作。一些热门应用举例:20180316085252689.png原创 2018-12-21 15:36:05 · 1112 阅读 · 0 评论 -
浅谈Android广播之LocalBroadcastManager理解
在Android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是存在安全性问题的,相应问题及解决如下: 1、当应用程序发送某个广播时系统会将发送的Intent与系统中所有注册的BroadcastReceiver的IntentFilter进行...原创 2018-03-20 16:14:05 · 619 阅读 · 0 评论 -
Android框架模式MVP
第一、基本概念MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。 模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;视图(View):负责界面数据的展示,与用户进行交互;主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。 MPV 是从经典的MVC模式演变过来...原创 2018-03-13 15:27:16 · 294 阅读 · 0 评论 -
android Studio 混淆打包
针对AndroidStudio的混淆打包,目前需要配置两个文件,build.gradle以及proguard-rules.pro一、build.gradle文件apply plugin: 'com.android.application'apply plugin: 'android-apt'def keystorePropertiesFile = file("keystore.propert...原创 2018-03-06 10:43:00 · 218 阅读 · 0 评论 -
RecyclerView和ListView区别
一、RecyclerView RecyclerView是Android5.0以后推出的,布局相关操作交由layoutManager进行管理,支持 线性布局、网格布局、瀑布流布局 三种,而且同时还能够控制横向还是纵向滚动,自定义化更强,而listview需要承担数据与布局等多个职责。 而 LayoutManager 只是一个抽象类而已,系统已经为我们提供了三个相关的实现类 Linear...转载 2018-02-23 16:37:35 · 700 阅读 · 0 评论 -
Android系统中的进程管理:进程的创建
概述Android系统以Linux内核为基础,所以对于进程的管理自然离不开Linux本身提供的机制。例如:通过fork来创建进行通过信号量来管理进程通过proc文件系统来查询和调整进程状态 等对于Android来说,进程管理的主要内容包括以下几个部分内容:进程的创建进程的优先级管理进程的内存管理进程的回收和死亡处理本文会专门讲解进程的创建,其余部分将在后面的文章中讲解。主要模块为了便于下文的讲解,...转载 2018-03-09 18:05:42 · 246 阅读 · 0 评论 -
Android进程管理(1)
不用在意剩余内存的大小.其实很多人都是把使用其他系统的习惯带过来来了.安卓Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知道Java,就能更清楚这机制了.其实和java的垃圾回收机制类似,系统有一个规则来回收内存.进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西.当然这个值默认设置得很小,所以你会看到内存老在很少的...转载 2018-03-09 17:37:49 · 160 阅读 · 0 评论 -
UI框架之FilterMenu使用
项目Git地址:https://github.com/lantian0314/ndkDemoUI框架FilterMenu是一种Menu界面,如下图第一、配置build.gradle文件 compile 'com.linroid.filtermenu:library:0.2.+@aar'第二、Layout界面布局<LinearLayout xmlns:android="http://schem...原创 2018-03-08 11:35:11 · 1112 阅读 · 0 评论 -
UI框架之gridPasswordView使用
项目Git地址:https://github.com/lantian0314/ndkDemoUI框架gridPasswordView是一种类似于微信和支付宝支付时密码界面,如下图第一、配置build.gradle文件compile 'com.jungly:gridPasswordView:0.3'第二、Layout界面布局<LinearLayout xmlns:android="http:/...原创 2018-03-08 10:14:51 · 1070 阅读 · 2 评论 -
ViewPager+Fragment实现页面点击切换和手势滑动
项目Git地址:https://github.com/lantian0314/ndkDemo一、项目运行的界面效果第二、项目的layout布局 2.1 fragement_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com...原创 2018-03-07 15:45:45 · 513 阅读 · 0 评论 -
Android中shape属性详解
一、简单使用刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用。1、新建shape文件首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.xml内容是这样的:(先不需要理解,先看shape怎么用) <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http...转载 2018-03-07 15:02:57 · 166 阅读 · 0 评论 -
AndroidStudio中第三方库Glide的
Glide是一个被google所推荐的图片加载库,这个库被广泛运用在google的开源项目中,lide 对于 Android SDK 的最低要求是 API level 10,其优点有配置简单、支持多种图片的格式(jpg、png、gif、webp)、支持多种资源方式(网络、assets 、File、Uri)。1.demo的github地址 :https://github.com/la原创 2018-02-07 18:15:34 · 4669 阅读 · 0 评论 -
Android性能优化之Listview
相信大家在很多时候都会用到ListView这个控件,因为确实是用的很多很多,但是有木有遇到过当数据很多很多的时候,往下滑ListView时有时候会卡顿,这就需要我们来优化它了。 ListView优化主要有下面几个方面:1、convertView重用2、ViewHolder的子View复用3、缓存数据复用 一、convertView重用首先讲下ListView的原理:ListView中的每一个Ite...转载 2018-02-27 11:18:43 · 171 阅读 · 0 评论 -
快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],...转载 2018-02-26 17:00:41 · 553 阅读 · 0 评论 -
androidstudio 导入git问题 is under Git, but is not registered in the Settings
从git项目第一次导入数据到本地可能会出现以上问题1、针对此图,首先选择Configure2、针对上图选择加号,然后选择指定的项目路径以及类型,点击OK-apply原创 2018-02-05 18:25:27 · 11104 阅读 · 0 评论 -
UI框架之SmartTabLayout使用
项目git地址:https://github.com/lantian0314/ndkDemoSmartTabLayout实现viewpgaer页面导航效果,简化并实现android的TabHost效果,顶部滑动tab,引导页,可以自定义tab样式,过渡效果 实现网易tab,微博tab,微信tab等so easy。 集成了SpringIndicator拖拽效果 开源项目的git地址:https:/...原创 2018-03-08 15:39:44 · 6115 阅读 · 0 评论 -
UI框架之SwipeMenuListView使用
项目git地址:https://github.com/lantian0314/ndkDemoSwipeMenuListView- listView侧滑删除效果。如下图开源项目的git地址:https://github.com/baoyongzhang/SwipeMenuListView第一、配置build.gradle文件compile 'com.baoyz.swipemenulistview:l...原创 2018-03-08 18:05:24 · 5057 阅读 · 0 评论 -
Android视频播放框架Vitamio
Vitamio 是一款 Android 平台上的全能多媒体开发框架。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 上支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。支持 A...原创 2018-03-01 14:15:19 · 8498 阅读 · 0 评论 -
普通for循环和增强for循环的使用小结
for循环分为两种:第一种为普通的for循环 这种for循环通常需要三个步骤即 for(初始表达式;条件表达式;递增表达式)有时候递增表达式也可以省去,一般是在使用Iterator迭代时(Iterator的hasNext方法判断时,可以省去递增表达式)。这种for循环很常用。第二种为增强的for循环(也就是foreach循环) 这种for循环的内部是调用了Iterator实现的(实现了...转载 2018-03-09 15:52:41 · 2564 阅读 · 0 评论 -
Http、TCP/IP协议与Socket之间的区别
1、TCP/IP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ac...转载 2018-03-09 15:18:39 · 164 阅读 · 0 评论 -
TCP/IP协议
TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP 协议、ICMP 协议、TCP 协议、以及 http、ftp、pop3 协议等。网络中的计算机都采用这套协议族进行互联。网络协议栈架构提到网络协议栈结构,最著名的当属 OSI 七层模型,但是 TCP/IP 协议族的结构则稍有不同,它们之间的层次结构有如图对应关系: 可见 TCP/IP 被分为 4 层,每层承担的任务不一样,各层的协...转载 2018-03-09 15:17:56 · 158 阅读 · 0 评论 -
Cause: com.android.dex.DexException: Multiple dex files以及app:transformClassesWithDexForDebug
今天在添加第三方依赖库时遇到如下问题:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex filesdefine Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;或者错误...原创 2018-03-01 17:08:24 · 224 阅读 · 0 评论 -
RecyclerView的使用
项目git地址:https://github.com/lantian0314/ORMProject一、环境的搭建使用快捷键Ctrl+Alt+Shift+s找到下图,并搜索recycler二、在布局文件中添加RecyclerView<android.support.v7.widget.RecyclerView android:id="@+id/recycle_view" ...原创 2018-02-22 17:47:35 · 183 阅读 · 0 评论 -
ORM框架之SugarORM
一、SugarORM框架简介要说SugarORM之前不得不说ORM。ORM(Object-Relational Mapping)即对象关系映射模式,是Java开发中常用的技术。它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。因为Android开发也是用Java语言,所以Android平...原创 2018-02-22 14:06:50 · 1041 阅读 · 0 评论 -
android Studio快捷键介绍
AndroidStudio有一些常用的快捷键在平时使用的比较多,下面做一些快捷键的简单介绍:1、Ctrl+tab 在不同的文件之间进行切换的操作,首先同时按下Ctrl+tab,然后保持Ctrl键的按压,使用UP或者Down来进行文件的选择打开操作。2、Alt+关闭的x 按下Alt键,然后点击当前需要留下的页面的关闭X,可以关闭出当前页面外的其他页面。3、Ctrl+Shift+N 可以以匹配的方式查...原创 2018-02-02 11:13:12 · 196 阅读 · 0 评论