
Android进阶
文章平均质量分 59
难道还怪我咯
乐观积极,乐于探索,喜欢用计算机来解决自己碰到的问题,善于写博客,积累知识,上stackoverflow搜索解决问题的思路;有较强的适应能力和良好的团队合作精神;有较强的英文阅读、交流能力以及编码能力,无障碍阅读专业外文书籍、论文等。<br>热爱移动互联网,希望在移动互联网领域向大神学习,进步!
展开
-
Android中图片的压缩
Android中的图片一般在内存中显示是以位图的方式实现的,在磁盘上主要以扩展名为.jpeg,.png,.webp格式的文件存储。 图片占用的空间分为内存空间和磁盘空间。内存空间即从磁盘或网络读取图片加载到内存中所占用的内存字节数大小。磁盘空间即一张存放在手机存储介质里的一张图片占用存储介质的字节数。 内存空间和磁盘空间是两个完全不同的概念,但是很多初学者甚至工作3年以上的都没有搞清楚这件事情,原创 2017-10-05 17:17:28 · 708 阅读 · 0 评论 -
Android 路径
1. 图片放在sdcard中,Bitmap imageBitmap = BitmapFactory.decodeFile(path) (path 是图片的路径,Android获取图片资源的4种方式,跟目录是/sdcard)2. 图片在项目的res文件夹下面//得到application对象ApplicationInfo1. 图片放在sdcard中,Bitmap imageBitma原创 2015-11-15 10:02:23 · 432 阅读 · 0 评论 -
Androd tools介绍
Android SDK包含了各种各样的定制工具,简介如下:Android模拟器(Android Emulator )它是在你的计算机上运行的一个虚拟移动设备。你可以使用模拟器来在一个实际的Android运行环境下设计,调试和测试你的应用程序。Android调试桥(Android Debug Bridge (adb) )Adb 工具可以让你在模拟器或设备上安装应用程序原创 2015-11-15 09:59:33 · 440 阅读 · 0 评论 -
Android广播
广播机制1 . Adnroid的广播机制(以intent对象的形式广播出去)Android系统已经写好了广播机制,在我们照相的时候系统会自动生成照相事件并广播出去。当来短信的时候,系统会自动生成一个短信事件并广播出去。许许多多的事件都是由Android系统自动广播出去。我们也可以自定义发送广播事件,通过sendBroadcast(intent itt)方法将一个广播事件发送出去。Andro原创 2015-11-15 09:55:42 · 563 阅读 · 1 评论 -
Android数据库 contentprovider
SQLiteSQLite介绍:小型关系数据库,占用空间很小。我们可以使用SQLiteOpenHelper类来创建数据库对象。这个类有以下方法:getReadableDatabase():获得一个可读的数据库。getWritableDatabase():获得一个可写的数据库。下面是三个回调函数:onCreate(SQLiteDatabase db):当创建数据库的时候会自动调原创 2015-11-15 09:53:39 · 1088 阅读 · 0 评论 -
Android 知识点小结
Android专用驱动Logger 完全内存操作适合频繁读写Binder Client/Server模型进程间一次数据拷贝进程内直接调用Ashmem 使用文件描述符描述通过Binder在进程间传递Activity生命周期由ActivityManagerService管理Activity堆栈原创 2015-11-15 09:50:13 · 446 阅读 · 0 评论 -
Fragmen直接来回切换deno
思路:第一步,建立一个activity,用来管理fragment。第二步‘获取fragmentManger 和fragmentTraction.private FragmentManager fm;private FragmentTransaction ft;fm = getFragmentManager();ft = fm.beginTransaction();原创 2015-08-10 19:02:10 · 787 阅读 · 0 评论 -
Android ART介绍
1、ART之所以会比Dalvik快,是因为ART执行的是本地机器指令,而Dalvik执行的是Dex字节码,通过通过解释器执行。尽管Dalvik也会对频繁执行的代码进行JIT生成本地机器指令来执行,但毕竟在应用程序运行的过程中将Dex字节码翻译成本地机器机器指令也会影响到应用程序本身的执行,因此即使Dalvik使用了JIT,也在一定程度上也比不上直接就可以执行本地机器指令的运行时。原创 2015-06-09 09:15:20 · 820 阅读 · 0 评论 -
EIT造型的理解及android NDK开发demo
EIT:指的是引擎、接口、执行。即引擎利用接口去执行。在java中E一般指的是父类,I接口一般指的是抽象方法和本地方法。T一般指的是子类(编译时候确定)或本地方法(运行时候确定)。其中I由基类决定。利用JNI java和本地方法可以互相调用。原创 2015-05-23 14:51:07 · 993 阅读 · 0 评论 -
Android Dalvik启动过程总结
在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。在本文中,我们就分析Dalvik虚拟机在Zygote进程中的启动过程。原创 2015-06-07 14:50:15 · 902 阅读 · 0 评论 -
Android虚拟机学习总结Dalvik虚拟机进程和线程的创建过程分析
Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行。由此也可看出,JNI方法是Android应用程序与本地操作系统直接进行通信的一个手段。Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数。这些原创 2015-06-07 15:04:11 · 1018 阅读 · 0 评论 -
沉寖式状态栏
/** * 沉寖式状态栏 * @param on */ private void setTranslucentStatus(boolean on) { Window win = getWindow(); WindowManager.LayoutParams winParams = win.getAttributes();原创 2016-02-11 11:36:02 · 1394 阅读 · 0 评论 -
Android 抖动效果
shake.xml<!-- Copyright (C) 2007 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in complian原创 2016-02-18 12:58:11 · 726 阅读 · 0 评论 -
Android 中IPC实践
1、什么是进程间通信(IPC)Android中的进程间通信(IPC)是指一个应用的组件运行在不同的进程中,组件之间需要进行数据交换;或多个应用的组件之间需要进行数据交换。2、为什么使用进程间通信?一般在APP的实际开发中基本一个应用一个进程。使用多进程会增加降低代码的可阅读性,还要编写额外的跨进程通信代码,还可能带来一些不可预知的bug。比如单例模式失效,线程同步失效等等。这些将大大增加了APP的开原创 2017-10-04 10:00:14 · 872 阅读 · 0 评论 -
Android内存泄漏优化总结
Android内存泄漏优化总结什么是内存?Android中的内存是手机的RAM。主要包括如下几个部分: 1、寄存器 位于Cpu内部,速度最快。 2、栈 用于存放基本类型以及引用变量。 3、堆 主要用于存放数组和new出来的对象,它由垃圾回收器进行管理(GC)。对内存的优化也是处理的堆内存。 4、静态存储区 存储应用运行一直存在的数据(static变量) 5、常量池 存放定义的常原创 2017-10-04 08:54:52 · 8337 阅读 · 3 评论 -
Android数据库知识点总结
本文主要讲述建库建表的流程以及增删改查操作。Android 数据库可以考虑自带的SQLite数据库或各种开源的三方库。本文先讲述系统自带的SQlite数据库的相关操作然后讲述使用WCDB开源库。 1、SQlite数据库的使用1.1建库、建表、库升级第一步、编写继承SQLiteOpenHelper的子类并定义该子类相关的数据库名称、数据库版本信息。如下所示:public clas原创 2017-08-31 17:29:58 · 659 阅读 · 0 评论 -
如何使用Android Studio阅读开源代码
此文献给阅读开源代码的小白,大神绕道。。。。 在开发中,我们经常需要在Github上找一些开源项目用于自己的项目中,然而经常由于看不到其运行效果导致不断的“试错”,因此一般来说,本人在使用一个开源项目之前会将其下载并运行到手机上看效果。一方面可以准确判断出是否适合自己的项目,另一方面可以根据项目需求做一定的修改。1、 找到项目地址,点击DownloadZIP,下载完成后,解压到本地磁盘转载 2017-07-06 20:45:29 · 791 阅读 · 0 评论 -
Android 虚拟机学习总结Dalvik虚拟机介绍
1、Dalvik虚拟机与Java虚拟机的最显著区别是它们分别具有不同的类文件格式以及指令集。Dalvik虚拟机使用的是dex(Dalvik Executable)格式的类文件,而Java虚拟机使用的是class格式的类文件。一个dex文件可以包含若干个类,而一个class文件只包括一个类。由于一个dex文件可以包含若干个类,因此它就可以将各个类中重复的字符串和其它常数只保存一次,从而节省了空间原创 2015-06-07 14:10:13 · 713 阅读 · 0 评论 -
AndroidSharedpreference数据共享
一个应用访问另一个应用的数据。前提是被访问应用的数据必须是全局可见的。步骤:1、获取另一个应用的上下文 packageName是应用的包名other=createPackageContext(packageName, CONTEXT_IGNORE_SECURITY);2、获得SharedPreferences对象。具体demo代码如下:public clas原创 2015-05-16 15:27:25 · 967 阅读 · 0 评论 -
面向对象复习
1、接口是常量和抽象方法的集合,接口中的方法默认是抽象的。2、控制反转:基类的方法可以主动的调用子类的方法,即典型的控制反转。基类与子类之间,主控权是在基类手上,透过Hook方法来调用子类。通常基类是撰写在先,而子类则撰写在后,这种前辈拥有主导权,进而「控制」后辈之情形,就通称为「控制反转」。3、基类可以提供默认的行为,或者定义默认行为。这些默认的行为可以被子类继承或调用。4、向上转型原创 2015-04-24 08:38:14 · 628 阅读 · 0 评论 -
android进阶之Monkey测试
1、黑盒测试,不知道源代码。2,白盒测试,在测试源代码。3.Monkey测试adb shell 进入linux终端。对该手机的所有应用进行狂点测试(500次)对系统中的某一个应用进行压力测试:对一个android应用测试2000次原创 2015-01-04 20:23:48 · 1085 阅读 · 1 评论 -
android进阶之android应用安装
android应用安装分为如下几步:1、把apk文件拷贝到android系统/data/app/xxx.apk2、在data/data目录下创建一个已当前应用包名一致的文件夹。(应用运行的数据均保存在该目录下)安装完成。卸载则相反。在system目录下有类似windows的注册表。原创 2015-01-04 15:39:42 · 831 阅读 · 0 评论 -
Android 进阶之adb指令
利用命令行执行android的adb指令,步骤如下1、在ADT sdk中找到adb,如下:2、cmd启动命令行,将该adb可执行文件拖入命令行即可运行,这样就可以执行各种adb指令了。(若下面方法启动不成功,则强制关闭进程或查看端口占用情况)3、如果adb挂掉,可以通过如下方式重新设置原创 2015-01-03 15:40:58 · 879 阅读 · 0 评论 -
Android进阶之android应用的SDK版本之间的切换
选中android工程,右键/属性,如下进行选择即可:原创 2015-01-03 16:08:13 · 2261 阅读 · 0 评论 -
Android进阶之XML文件解析
xml序列化是把内存数据写入硬盘或SD卡。XML文件解析的方式:1、dom解析,生成一个树状结构,并全部加入内存,在内存修改树状结构的节点即可。但是消耗内存大。2、sax解析 基于事件的解析方式。速度快,效率高,但是不能倒退。3、pull解析 基于事件的解析pull解析方式:第一步,初始化解析器,设置要解析的数据流。(此刻指向文档的开始部分)第二步,得到事件。原创 2015-01-18 20:14:28 · 693 阅读 · 0 评论 -
android进阶之文件访问权限
android是基于linux的,所以文件访问权限和linux一样。其中r代表可读,W代表可写,X代表可执行。文件访问权限分三组。1-3 当前用户(应用)访问权限。4-6 当前用户所在组的访问权限。7-9 其他用户(应用)访问权限。android应用是一个独立的用户,对应一个独立的组。可以通过如下指令来查看用户组和用户ID:原创 2015-01-10 20:26:13 · 1018 阅读 · 0 评论 -
android进阶之生成xml文件
方式一通过StringBuider 来生成xml文件(他线程不安全,不需要进行通过检测加锁,效率高,单线程建议使用。StrigBuffer线程 安全,效率较之低,多线程环境使用)。如下所示:方式二,通过XML的序列器来实现生成XML文件,代码中的null是命名空间。tag是节点,doucument是文件头声明。示例代码如下:原创 2015-01-11 16:09:19 · 862 阅读 · 0 评论 -
android 进阶之文件操作
原创 2015-01-04 21:52:18 · 667 阅读 · 1 评论 -
android 将个人应用改为系统应用
操作步骤1. 将你的手机数据线,插上,把你的设备设置为允许usb调试2. 打开命令终端cmd3. 输入命令 adb shell4. 确定能进入系统5. 输入命令 mount6. 因为system默认是只读文件夹,所以根据上面的提示输入下面命令,使其变为可读写转载 2015-01-29 20:44:07 · 1367 阅读 · 0 评论 -
androidUI性能优化
1、adapter 和adapterview 复用历史缓存(item布局和数据缓存)。2、数据分页显示(利用操作引导用户)3、优化布局文件xml。(layout尽量不要超过5层)4、优化activity的背景图片。利用getWindow.setBackgroudDrawable(id)设置背景图,使用系统默认的最顶层来提高效率。5、在自定义主题中设置背景6、使用原创 2015-01-11 09:33:36 · 880 阅读 · 0 评论 -
android进阶之常见adb指令
1、显示设备如果adb已经被关闭,可以用该指令启动。2、关闭adb指令3、安装apk指令4、卸载指令uninstall+ 应用包名5、adb -s +设备名称+install apk路径+apk 向指定设备安装apk7、从手机拿文件,向手机发文件8、进入手机终端指令查看文件 #ps 手机中运行的原创 2015-01-04 16:50:57 · 1335 阅读 · 0 评论 -
adb shell获取root权限
adb shell获取root权限因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb push一个文件就提示Permission Denied。删除system下的文件也没有权限。其实有两种方法可以获取adb shell的root权限,这两种方法的前提都是手机已经roo转载 2015-02-27 19:50:42 · 47011 阅读 · 5 评论 -
android 长连接总结
1、为了实现IM通信,android客户端和服务端保持长连接。思路,开启一个线程用来发送心跳包,再开启一个线程读取服务端返回的数据。解析到返回的数据后,该线程发消息到主线程,再次启动该读线程,这样可以避免出现读线程阻塞。原创 2015-03-01 14:24:49 · 1314 阅读 · 0 评论 -
加载图片到内存
1、图片解析配置2、只解析图片的尺寸3、获取图片的宽高信息4、获取手机屏幕的宽高5、计算缩放比例(图片的大小/窗口的大小)按大的进行缩放6、解析图片全部信息 scale 缩放比例原创 2015-04-21 09:08:07 · 1291 阅读 · 0 评论 -
性能优化之布局优化
本文为Android性能优化的第二篇——布局优化,主要介绍使用抽象布局标签(include, viewstub, merge)、去除不必要的嵌套和View节点、减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具(hierarchy viewer和lint)。1、抽象布局标签(1) 标签include标签常用于将布局转载 2015-04-09 21:23:11 · 517 阅读 · 0 评论 -
创建fragment
fragment利用布局文件静态加载的方式:第一步,继承Fragment基类。(不需要在清单文件中配置)第二步,在布局文件中添加fragment 元素。其中小写代表类型(在activity所在的布局中进行添加)。如下:名字是全类名的形式(包名+类名)第三步,复写fragment生命周期方法(一般复写oncreate,onCreateView,onPause方法)加载布局原创 2015-04-20 09:20:07 · 868 阅读 · 0 评论 -
内容观察者(针对contentprovider)
通过内容观察者实时观察第三方数据的变化。步骤如下;1、获得内容解析者2、对内容解析者注册内容观察者,第二个参数为true则模糊匹配,前缀相同即可,false就完全匹配。3、继承contentObserver并实现onChange方法——————————————————————————————————————————————————原创 2015-04-19 14:51:32 · 1403 阅读 · 0 评论 -
contentprovider 自定义内容提供者
contentprovider 自定义内容提供者步骤;1、继承contentprovider2、清单文件配置,包括主机路径配置:content://包名.类名3、定义URI匹配器,用于匹配uri,若路径不满足条件返回-1。4、添加匹配规则5、复写增删改查方法注意:结果集系统会自动关闭!!!原创 2015-04-19 13:05:27 · 1117 阅读 · 0 评论 -
多线程下载
步骤:1、连接服务器,获取文件的大小,并在本地创建一个和服务器文件大小相同的文件rwd 模式是直接同步到硬盘2、计算线程下载的数据大小3、创建下载线程原创 2015-04-19 16:30:43 · 817 阅读 · 0 评论 -
多线程断点下载
将下载进度持久化。下次下载再读取上一次的进度,再次下载即可。下载线程中记录下载进度,关键代码如下:正确如下;设置标志位来判断线程是否执行完。清除文件在android中将这些状态保存在数据库中。原创 2015-04-19 18:59:25 · 696 阅读 · 0 评论