![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 71
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
AIDL的Binder框架
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38461079 ,本文出自【张鸿洋的博客】1、概述Binder能干什么?Binder可以提供系统中任何程序都可以访问的全局服务。这个功能当然是任何系统都应该提供的,下面我们简单看一下Android的Binder的框架Android Binder框架分为服务器接口、Bin转载 2016-04-01 16:26:03 · 352 阅读 · 0 评论 -
Android屏幕适配小结
基本概念屏幕尺寸 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米屏幕分辨率 屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1960*1080。屏幕像素密度 屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越原创 2016-08-27 16:22:27 · 512 阅读 · 0 评论 -
关于OnTrimMemory
OnTrimMemory 回调是 Android 4.0 之后提供的一个API,这个 API 是提供给开发者的,它的主要作用是提示开发者在系统内存不足的时候,通过处理部分资源来释放内存,从而避免被 Android 系统杀死。这样应用在下一次启动的时候,速度就会比较快。 本文通过问答的方式,从各个方面来讲解 OnTrimMemory 回调的使用过程和效果。想要开发高性能且用户体验良好的 Androi原创 2016-04-13 13:52:34 · 2919 阅读 · 0 评论 -
APK安装过程分析
拷贝apk文件到指定目录在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /data/app 目录下。/data/app目录是用户有权限访问的目录,在安装apk的时候会自动选择该目录存放用户安装的文件,而系统出厂的apk文件则被放到了 /system 分区下,包括 /system/app,/system/vendor/app,以及 /system/p原创 2016-08-27 17:58:27 · 474 阅读 · 0 评论 -
Android和Java的垃圾回收
来讨论一下Android的GC操作,GC全称是Garbage Collection,也就是所谓的垃圾回收。Android系统会在适当的时机触发GC操作,一旦进行GC操作,就会将一些不再使用的对象进行回收。那么哪些对象会被认为是不再使用,并且可以被回收的呢?我们来看下面一张图:上图当中,每个蓝色的圆圈就代表一个内存当中的对象,而圆圈之间的箭头就是它们的引用关系。这些对象有些是处于活动状态原创 2016-03-08 10:25:31 · 2887 阅读 · 0 评论 -
Android自定义View
view的显示过程:ActivityThread中,activity对象被创建后,会将DecorView添加到window中(控制DecorView的外观和行为策略,有唯一的实现类PhoneView)同时会创建ViewRoot对象将window和view关联起来,ViewRoot对象的performTraversal方法完成顶级View(decorview)的mesure,layout,draw方法原创 2016-05-03 15:11:36 · 615 阅读 · 0 评论 -
APP怎么判断自己是处于前台还是后台
两张方法通过RunningTaskInfo类判断(需要额外权限) 需要在AndroidMenitfest.xml文件中添加以下权限<uses-permission android:name="android.permission.GET_TASKS" /> public static boolean isApplicationBroughtToBackground(final Con原创 2016-08-18 16:07:12 · 6116 阅读 · 0 评论 -
Android屏幕卡顿,电量损耗和Service常驻小结
一、屏幕出现卡顿的原因: 表面原因: 1、在UI主线程中执行比如像网络下载等耗时的操作,致使CPU没有能力在16ms内完成对下一帧显示数据的处理 2、需要显示的界面太过复杂,比如布局的层次较深,界面控件过多等,给CPU与GPU的渲染造成压力 3、手机硬件GPU、CPU处理能力有限,FPS低于16ms,造成卡顿;Android 4.1后Triple Buffering三缓冲机制一定程度上缓解了原创 2016-04-21 10:55:47 · 1756 阅读 · 0 评论 -
Activity细粒度生命周期
onSaveInstanceState与onRestoreInstanceState的作用:在资源紧张的情况下,系统会选择杀死一些处于非栈顶的Activity来回收资源。 为了能够让这些可能被杀死的Activity能够在恢复显示的时候状态不丢失,所以需要在Activity从栈顶往下压的时候提供onSaveInstanceState的回调用来提前保存状态信息。而onRestoreInstanceSta原创 2016-04-13 13:50:37 · 425 阅读 · 0 评论 -
Android性能优化
布局优化1.如果系统每次渲染时间都在16ms之内ui会非常流畅,这时候fps为60;如果一次绘制任务耗时20ms,那么16ms内信号无法绘制,该帧就会丢弃,等待下次信号才开始绘制,导致16*2ms内都显示同一帧画面,这就是画面卡顿的原因 2.避免OverDraw,例如系统默认绘制activity的背景,而如果再给布局绘制重叠的背景,就属于无效的过度绘制OverDraw 3.优化布局层级,使用in原创 2016-07-25 22:00:38 · 466 阅读 · 0 评论 -
Android的Preference
PreferenceActivity要在 Activity 中显示您的设置,请扩展 PreferenceActivity 类。这是传统 Activity 类的扩展,该类根据 Preference 对象的层次结构显示设置列表。当用户进行更改时,PreferenceActivity 会自动保留与每个 Preference 相关的设置。注:如果您是开发针对 Android 3.0 及 更高版本系统的应用,原创 2016-07-24 01:16:54 · 500 阅读 · 0 评论 -
Android的硬件加速
手机中的GPU也是为了对图形、图像处理而存在的,所谓强制渲染,就是hwa(hard ware acceleration硬件加速)的一种,其存在的意义就是为了分担CPU的负担,其原理是通过GPU对软件图形图像的处理来减轻CPU的负担,从而使应用软件能够以更快的速度被处理,以达到提速的目的。对于普通的玩家来说,强制GPU渲染是一把双刃剑,有利有弊。虽然强制GPU渲染能够实现应用软件的提速,不过长期的开启原创 2016-08-15 00:55:32 · 554 阅读 · 0 评论 -
Android的.9图片
作用.9图片的作用是在图片拉伸的时候特定的区域不会发生图片失真。原理在图片的固有区域显示的是原始图片,并且在原始图片的四周添加了一个像素,也就是图片比原始图片扩大了一圈,多出来的那一圈是透明像素。我们需要绘制的地方是在那一圈透明像素上进行绘制。如图: l代表的是图片拉伸的纵向范围,t代表图片拉伸的横向范围,r代表前景显示的纵向范围,b代表前景显示的横向范围,如: 图片拉伸区域: 红色框区域:原创 2016-08-26 17:46:10 · 524 阅读 · 0 评论 -
Android静态/动态注册广播的区别
广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。2.当广播为有序广播时: 1 优先级高的先接收 2原创 2016-06-12 15:35:29 · 2701 阅读 · 0 评论 -
Activity和Service的启动
相同app:standard:新启动的activity位于栈顶singleTop:如果调用的目标Activity已经位于调用者的Task的栈顶,则不创建新实例,而是使用当前的这个Activity实例,并调用这个实例的onNewIntent方法。singleTask:如果实例存在所有位于该activity上面的activity实例会被销毁singleInstance:新启动的acti原创 2016-03-07 19:13:27 · 985 阅读 · 0 评论 -
Android的启动过程
Android从Kernel启动有4个步骤(以android4.2为例)(1) init进程启动(2) Native服务启动(3) System Server,Android服务启动(4) Home启动总体启动框架图如: 第一步:initial进程(system/core/init) init进程,它转载 2016-04-09 01:04:50 · 880 阅读 · 0 评论 -
Android的Binder小结
Server?????Server????Service?????????Client?????????Service Manager??????SM???????????Server???SM??????????Client?????Client??Service????????????????SM???????????Client?????????????Client?原创 2016-03-19 16:24:39 · 741 阅读 · 0 评论 -
Android常用设计模式
1.单例模式:Application,EventBus 2.工厂模式:BitmapFactory 3.观察者模式:Listener 4.适配器模式:listview 5.组合模式:view和viewgroup 6.MVC模式:M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。 V层:应用层中处理数据显示的部分,XML布局可以视为V层,原创 2016-04-13 14:56:24 · 525 阅读 · 0 评论 -
Android的activity启动延迟加载
我们有时会遇到白屏或者页面切换卡顿等现象,这些都是Activity启动速度慢的表现.我们一般有两种优化方式,软优化和硬优化.硬优化主要是针对代码的结构和逻辑,如精简布局,减少层次使用include,merge,viewStub;能用基本类型如Int,Long,就不用Integer,Long对象等.软优化尽可能减少代码的结构和逻辑,下面我们主要来看软优化的延迟加载. 延迟加载是把可以延迟展示原创 2016-06-29 21:15:58 · 4379 阅读 · 0 评论 -
Android的Launcher程序(HOME)
Android系统开机,各个应用是如何加载并被显示到桌面上的呢?带着这份好奇,阅读了在Android应用程序安装过程源代码分析 一文中,我们看到应用程序的apk归档文件中的配置文件AndroidManifest.xml 会被解析,解析得到的application,service和activity等信息保存在PackageManagerService中。原创 2016-04-09 23:06:34 · 605 阅读 · 0 评论 -
JVM和DVM
区别一:dvm执行的是.dex格式文件 jvm执行的是.class文件 Android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm执行的是.class文件。 区别二:dvm是基于寄存器的虚拟机 而jvm执行是基于虚拟栈的虚拟机。寄存器存取原创 2016-04-27 17:52:24 · 1089 阅读 · 0 评论 -
Android的Window
分类-应用Window,对应于一个activity -子Window,如Dialog(不能采用ApplicationContext) -系统Window,如Toast和系统状态栏 WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程原创 2016-05-16 23:32:24 · 344 阅读 · 0 评论 -
Android的AsyncTask原理和配置
先来看看AsyncTask的定义:[java] view plain copypublic abstract class AsyncTask { AsyncTask是一个抽象类,它是对thread和Handler的封装,我们要使用他就必须创建一个子类来继承他三种泛型类型分别代表“启动任务执行的输入参数”、“后台任务执行的进度”、“后台计算原创 2016-03-08 15:52:06 · 627 阅读 · 0 评论 -
listview异步加载图片乱序解决方案
-控制异步任务执行的频率,滑动时停止加载图片,等列表停下来后再加载,可以在onScrollListener的onScrollStateChanged方法里设置判断条件 -给view设置tag,view.setTag(url) -使用NetworkImageView原创 2016-05-17 01:20:02 · 549 阅读 · 0 评论 -
Android存储数据的几种方式
Android一共五种存储方式: 1.文件存储 2.SharedPreference存储 3.使用SQLite存储 4.使用ContentProvider存储 5.网络存储文件存储 保存在/data/data/packagename/files目录下,读取/写入的方式,文件可用来存放大量数据,如文本、图片、音频等。SharedPreference存储 保存在/data/data原创 2016-07-11 20:51:53 · 789 阅读 · 0 评论 -
PID,UID,sharedUserId以及Android开启多进程模式
linux下的UID是系统用户名的意思,Android系统修改了linux 的UID的含义:每个APP对应一个UID。通过设置ShareUID,拥有同一个ShareUID并且签名相同的两个APP可以跑在同一个进程中;PID是进程id的意思,一个UID可以对应多个PID包名和签名: 包名不一致:系统会认为是个新的软件,这就不算升级了 包名一致,签名不一致:系统会提示先卸载之前安装的版本,才能继续原创 2016-05-06 20:37:05 · 3267 阅读 · 0 评论 -
Android的manifest配置
coreApp=true:核心应用 android:persistent=”true”:系统常驻进程,挂掉后系统会尝试重启该进程 protected-broadcast:只有系统才能发送的广播,也只有系统application才能在manifest中定义这个 android:exported=true:将该activity暴露给外部,设置IntentFilter后默认为true原创 2016-06-14 14:38:01 · 549 阅读 · 0 评论 -
Android的序列化
Parcelable是安卓的序列化接口,性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化Serial原创 2016-04-08 15:08:49 · 361 阅读 · 0 评论 -
Android内存优化
1.节制的使用Service,最好使用IntentService(任务结束会自动停止,避免Service内存泄漏),只有当任务正在执行的时候才让Service运转起来2.避免创建不必要的对象3.对常量使用static final修饰4.使用增强型for循环语法(ArrayList除外),传统for循环的第二布尽可能简洁5.重用布局文件,include,merge(减少布局嵌套层数)原创 2016-03-04 10:30:24 · 591 阅读 · 0 评论 -
Android的Fragment
Fragment的生命周期不废话,直接上图 fragment所在的 Activity 的生命周期会影响fragment的生命周期,其表现为,Activity 的每次生命周期回调都会引发每个片段的类似回调。 例如,当 Activity 收到 onPause() 时,Activity 中的每个片段也会收到 onPause()。不过,fragment还有几个额外的生命周期回调,用于处理与 Activ原创 2016-06-30 11:05:10 · 670 阅读 · 0 评论 -
Android动态加载
安卓动态加载和热部署:App(宿主)在运⾏状态下动态加载某个模块(插件),从而新增功能或改变某⼀部分行为 1.1 DexClassLoader类 可以加载jar/apk/dex,可以从SD卡中加载为安装的apk。 1.2 PathClassLoader类 只能加载已经安装到Android系统中的apk文件。github上相关开源框架:d原创 2016-03-23 16:35:07 · 649 阅读 · 0 评论 -
Android恶意样本批量获取方法
在进行Android恶意软件检测的研究时,不可避免地需要大批量的Android恶意样本,但在获取的时候会遇到一些困难,下面介绍几种方法:1.国内论坛 看雪论坛 http://bbs.pediy.com/ 木蚂蚁社区http://bbs.mumayi.net/卡饭论坛http://www.kafan.cn/kf.php吾爱破解http://www.52pojie.cn/这些都是三三两两上传,吾爱原创 2017-02-15 10:31:40 · 3431 阅读 · 5 评论