Android
文章平均质量分 50
Mr-Xi
此博客不在更新,更多博客请访问:
http://blog.csdn.net/qq_29078329
展开
-
Android中的MVC与MVP
转自:http://blog.csdn.net/lmj623565791/article/details/46596109一、概述对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等。本篇博文仅是为了做下记录,提出一些自己的看法,和帮助大家如何针对一个Activity页面去编写针对MVP风格的代码转载 2016-12-05 14:48:30 · 449 阅读 · 0 评论 -
Android中图片占用内存计算
转自:http://blog.163.com/hero_213/blog/static/39891214201412621834253/Android中有四种,分别是:ALPHA_8:每个像素占用1byte内存ARGB_4444:每个像素占用2byte内存ARGB_8888:每个像素占用4byte内存RGB_565:每个像素占用2byte内存Andr转载 2016-10-30 21:54:51 · 1532 阅读 · 0 评论 -
Android中的ImageLoader实现思路
具备的功能:1 图片的同步加载,开启一个子线程一张接一张的加载图片2 图片的异步加载,开启多个子线程同时加载图片,一个线程加载一张3 图片的压缩4 图片的缓存,包括内存缓存、磁盘缓存5 图片的下载提供两个接口,图片同步加载的接口、图片异步加载的接口,同步加载开启一个子线程一张接着一张的加载图片,异步加载接口开启多个子线程同时加载多张图片,每个线程加载一张,多个线程在线程池中原创 2016-10-30 21:47:36 · 345 阅读 · 0 评论 -
BitMap加载、压缩、缓存
加载图片:压缩图片:(1)加载大尺寸图片时,采样压缩很多时候ImageView尺寸小于图片原始尺寸,没必要把原始图片全部加载到内存,可能造成oom,并且ImageView也没办法全部显示原始图片,采样压缩将缩小后的图片在ImageView中显示,同时降低图片内存占用从而避免oom,提高Bitmap加载性能。上述四种Bitmap加载方法都支持BitmapFactory.O原创 2016-10-30 21:40:23 · 730 阅读 · 0 评论 -
Android中物理返回键的重写方法
重写onBackPressed()或者onKeyDown(intkeyCode, KeyEvent event)注意两个方法不能同时重写原创 2016-10-30 20:52:02 · 3767 阅读 · 0 评论 -
Android进程优先级以及线程间通信方式
Android中的进程默认情况下, 同一个application中的所有component运行在同一个linux进程下. 启动一个component A时, 如果已存在处于运行状态中的component B, 且A和B属于同一个application, 那么component A将在component B所在的进程下运行. 否则将为A创建一个新的linux进程. 开发者也可以为applic转载 2016-10-30 20:42:33 · 498 阅读 · 0 评论 -
Android中进程间通信方式(IPC)
1使用BundleBundle实现了Parcelable接口,可以在不同进程间传递,在Bundle中附加数据,通过intent可以由一个进程的组件启动另一个进程的组件。2 使用文件一个进程在文件中写入数据,其他进程再读取(涉及到写操作,线程要同步);或者一个进程把对象序列化到本地,另一个进程把对象反序列化。(进程间通信不适合用SharedPreference,系统对SP的读写有一定的缓原创 2016-10-30 20:35:38 · 490 阅读 · 0 评论 -
Android中的parcelable接口使用
转自:http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html1. Parcelable接口Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing转载 2016-10-30 20:22:09 · 326 阅读 · 0 评论 -
Android多进程使用场景
1 如何使组件运行在其他进程中正常情况下,一个apk启动后只会运行在一个进程中,其进程名为AndroidManifest.xml文件中指定的应用包名,所有的基本组件都会在这个进程中运行。但是如果需要将四大组件运行在单独的进程中,就需要用到Android:process属性了。我们可以为android的组件指定process属性来指定它们运行在指定进程中。通过设置组件的p原创 2016-10-30 20:18:40 · 1916 阅读 · 0 评论 -
Android内存泄露分析工具MAT
转自:http://blog.csdn.net/aaa2832/article/details/194196791 内存泄漏的排查方法Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 :· heap 查看堆的分配情况· allocation tracker跟踪内存分配情况DDMS转载 2016-10-30 19:51:19 · 324 阅读 · 0 评论 -
Android中的内存泄露
(1) 单例的使用可能造成内存泄露单例模式只允许应用程序存在一个实例对象,并且这个实例对象的生命周期和应用程序的生命周期一样长,如果单例对象中拥有另一个对象的引用的话,这个被引用的对象就不能被及时回收。解决:在单例类里,把内部持有的对象声明为弱引用(2) 静态集合类的使用静态的集合类的生命周期和应用程序的生命周期一样长,所以在程序结束前容器中的对象不能被释放,会造成内存泄露。原创 2016-10-30 19:43:42 · 268 阅读 · 0 评论 -
Android多线程下载SDK的设计,支持断点续传
5确定了每个线程负责下载的区间,建立线程集合,存放所有工作线程,还要建立数据库存储每个线程这次下载的文件块的第一个字节、最后一个字节、本次下载的容量,线程的id(用于标记线程)、URL地址。然后启动多个线程,发送HTTP请求获取数据,通过输入流把文件读入后,RandomAccessFile保存在本地。(RandomAccessFile对应SD卡上的文件,RandomAccessFile.s原创 2016-10-30 22:22:35 · 567 阅读 · 0 评论 -
Android Binder机制
Android系统的虚拟地址内存分为用户空间和内核空间,用户空间是非共享的,只让应用自己访问,内核空间是共享的,Binder通过共享内核空间实现进程间通信。Binder把进程A生成的IPC数据(在用户空间生成),传递给BinderDriver,Binder Driver在内核空间运行,之后Binder Driver再把IPC数据传递给进程B。IPC数据由4部分组成,Handle、R原创 2016-10-30 22:37:42 · 574 阅读 · 0 评论 -
Android中的AMS
AMS是一个系统关键服务,运行在系统进程System_Server中,AMS实现了IBinder接口,它在一个单独的线程中运行,activity/service生命周期的回调都由AMS完成。AMS提供了一个ArrayList mHistory来管理所有应用的activity,activity在AMS中的形式是ActivityRecord,task在AMS中的形式为TaskRecord,进程原创 2016-10-30 22:40:04 · 961 阅读 · 0 评论 -
Android数据库升级
如何判断数据库是否需要升级?数据库升级时,如何保证已经存在的数据不丢失? 4) 将TableC_temp删除原创 2016-10-31 14:35:41 · 320 阅读 · 0 评论 -
Android中minSdkVersion、targetSdkVersion、compileSdkVersion含义
minSdkVersion:应用能运行的最低的API Level,低于这个值的Android机,不能安装该应用。targetSdkVersion:通知系统,测试应用的测试机的sdk版本,应用兼容targetSdkVersion之前的机型。compileSdkVersion:使用哪个版本Android SDK编译,使用任何新添加的API就要使用对应level的Android SDK。原创 2016-10-31 14:29:58 · 639 阅读 · 0 评论 -
Android中如何在子线程执行任务完成后更新UI
1 AsyncTask(或者Thread)+Handler启动子线程,子线程执行完任务后,通过Handler给主线程中的Looper发送消息2 Activity.runOnUiThread(Runnable r)在Activity中启动子线程,子线程执行完成任务后,调用runOnUiThread(Runnable r)。runOnUiThread(Runnable r)是Activ原创 2016-10-30 19:40:15 · 2443 阅读 · 0 评论 -
Android SDK 6.0新特性
转自http://www.open-open.com/lib/view/open1451369220339.htmlandroid的权限系统一直是首要的安全概念,因为这些权限只在安装的时候被询问一次。一旦安装了,app可以在用户毫不知晓的情况下访问权限内的所有东西。难怪一些坏蛋利用这个缺陷恶意收集用户数据用来做坏事了!android小组也知道这事儿。7年了!权限系统终于被重新设转载 2016-10-31 14:22:18 · 1532 阅读 · 0 评论 -
关于ActivityThread
ActivityThread的内部类H(handler)负责activity、service声明周期消息的处理、window窗口出现和隐藏消息处理等。main()方法在ActivityThread中,是程序的入口,在main()中开启了looper.loop(),ActivityThread运行在主线程中。ActivityThread源码:http://blog.csdn.net/原创 2016-10-30 23:02:25 · 480 阅读 · 0 评论 -
Handler延迟消息处理
MessageQueue,以队列的形式管理message,message先进先出,但其内部是采用单链表来存储消息列表。post(Runnable r)、postDelayed(Runnabler, long delayMillis)、sendMessage(Message msg)、sendMessageDelayed(Message msg, long delayMillis)最终调用的原创 2016-10-30 22:59:17 · 3027 阅读 · 1 评论 -
Android应用的私有数据被其他应用访问
私有数据是否允许其他应用访问,取决于文件创建时,文件的创建者给文件赋予的权限,也就是指定的mod值。其他应用如何访问本应用的私有数据?如果当前应用私有文件可读或者可写的话,根据当前应用包名创建这个包的上下文,其他应用通过这个Context就可以访问当前应用的私有数据。参考链接:http://blog.csdn.net/roland_sun/article原创 2016-10-30 22:54:25 · 1900 阅读 · 0 评论 -
Android中数据存储方式
本质来说分三种:保存在sdcard上(手机自带的磁盘);手机内置内存(即data/data/目录);运行时内存(list、map)原创 2016-10-30 22:50:41 · 308 阅读 · 0 评论 -
Android中View的绘制流程以及View的优化
Measure过程measure用来测量view的宽和高,performTraversals()调用performMeasure()完成顶级View(DectorView)的测量,在performMeasure()中调用measure(),measure()中又会调用onMeasure(),在onMeasure()中对所有的子元素进行测量,这样流程就从父容器传递到了子元素中,子元素又会重复父容原创 2016-10-30 22:41:54 · 500 阅读 · 0 评论 -
Android中判断当前线程是否是主线程
Looper.myLooper()==Looper.getMainLooper();Thread.currentThread()==Looper.getMainLooper().getThread();Looper.myLooper()获得当前线程中的Looper对象Looper.getMainLooper()获取主线程的Looper对象原创 2016-10-30 19:24:26 · 637 阅读 · 0 评论 -
Volley使用
volley是进行HTTP通信的库,volley封装了HTTP请求过程和响应过程,用Request作为HTTP的请求对象,Response作为HTTP的响应对象,Volley既可以使用StringRequest、JsonRequest发送HTTP请求获取字符串数据,也可以使用ImageRequest、ImageLoader、NetworkImageView加载图片。使用:使用StringReq原创 2016-10-29 21:49:55 · 457 阅读 · 0 评论 -
EventBus使用
EventBus是实现事件订阅和发布的一个开源库,可以在Android各个组件之间传递消息和处理消息,EventBus可以降低发送者和接收者之间的耦合度。使用的时候,需要先实现一个事件类,然后在需要订阅事件的组件中调用EventBus实例的register(this)注册事件,注册完成后,通过EventBus的post(Objectobject)发送事件,注册事件的组件收到消息后,会回调相关的原创 2016-10-29 19:54:23 · 1227 阅读 · 0 评论 -
Android中消息传递机制
(1) Handler的作用是把消息加入特定的Looper所管理的消息队列中,并分发和处理消息队列中的消息。每个handler都和一个looper关联,Looper负责管理线程的消息队列并启动消息循环(消息队列是一个单链表实现的)。(2)Looper在创建的时候会调用prepare()生成一个looper对象,并且一个线程只能创建一个looper对象,在looper的构造方法里会创建一个消息队原创 2016-10-29 13:19:34 · 376 阅读 · 0 评论 -
fragment生命周期
activity与fragment生命周期对应关系:activity上加载了fragment,activity启动时的生命周期:activity上加载了fragment,activity销毁时的生命周期:(1)Activity加载fragment时onAttach()、onCreate()、onCreateView()、onActivityCreat原创 2016-10-29 13:15:55 · 307 阅读 · 0 评论 -
Android里的Context
Context作为一个抽象的基类,定义了一套基本的功能接口,它的实现子类有三种:Application、Activity和Service,通过它访问当前包的资源(getResources、getAssets)和启动其他组件(Activity、Service、Broadcast)以及得到各种服务(getSystemService)。Context的真正实现都在ContextImpl中,Conte原创 2016-10-29 12:57:49 · 363 阅读 · 0 评论 -
activity加载模式以及taskAffinity属性
standard(标准模式),默认模式,每次启动一个standard模式的activity,都会创建一个实例。被启动的标准模式的activity和启动它的activity在一个任务栈中。singleTop(栈顶复用),如果Activity实例位于栈顶,就不产生新的实例,直接使用栈顶的实例,否则,就会产生一个新的实例,压入栈顶。被启动的singleTop模式的activity和启动它的act原创 2016-10-29 12:50:21 · 395 阅读 · 0 评论 -
activity生命周期
(1) 启动Activity:系统会先调用onCreate()(初始化),然后调用onStart()(在后台),最后调用onResume(在前台,可交互),Activity进入运行状态。(2) 当activity跳转到另一个activity或者按home键回到主屏或者锁屏(也就是activity全部不可见)时,系统会先调用onPause(),然后调用onStop(),进入停原创 2016-10-29 12:43:19 · 365 阅读 · 0 评论 -
Android中ViewPager使用
ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。分三个步骤来使用它: 1.在住布局文件里加入[html] view plain copy android.support.v4.view.ViewPager 这个组件,注意这个组件是用来显示左右滑动的界面的,如果不加载xml布局文件,他是不会显示内容的。转载 2016-11-09 15:04:38 · 966 阅读 · 0 评论 -
Serializable和Parcelable区别
Parcelable在内存序列化,序列和反序列是在内存中进行的,Serializable使用IO读写存储在硬盘上进行,内存读写速度大于磁盘读写,所以Parcelable的效率要高。Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。参考链接:http://www.2cto.com/kf/201403/288476.htmlhttp://www.cnblo原创 2016-10-28 16:53:45 · 232 阅读 · 0 评论 -
Android扫描SD卡中所有图片,获得图片的名称、路径、大小
public class MainActivity extends Activity {private ListView mylist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se原创 2015-03-27 16:16:36 · 1175 阅读 · 0 评论 -
Android Studio快捷键
Android Studio快捷键Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+转载 2015-05-17 14:43:04 · 305 阅读 · 0 评论 -
使用Android自带媒体库读取MP3文件
今天研究了下如何在Android读取SD卡中的媒体文件(MP3),开始的思路是遍历SD卡所有目录,相信这也是所有开发者第一会想到的思路,无法就是遍历所有文件,将所有后缀名为.mp3读取出来;但是最后发现,如果你对Android稍有了解,你会发现,其实媒体扫描这个工作,Android设置已经替我们干了,Android系统会在SD卡有更新的时候自动将SD卡文件分类(视频/音频/图片...),并存入SQ转载 2015-03-25 21:38:49 · 1107 阅读 · 0 评论 -
Android中的HandlerThread.
HandlerThread继承了Thread,在run()中通过Looper.prepare()创建了loop对象,并通过Looper.loop()开启了消息循环。新建的handler和HandlerThread的loop绑定在一起,handler处在一个子线程中,这样就能够执行一些耗时操作。IntentService中封装了HandlerThread和Handler。原创 2016-10-29 13:26:38 · 317 阅读 · 0 评论 -
IntentService使用、原理
IntentService继承了Service,在IntentService内有一个工作线程来处理耗时操作。IntentService封装了handlerThread和Handler,在IntentService的onCreate()中创建并启动了handlerThread对象,利用handlerThread的looper对象又创建了Handler对象。每次启动Intentservice,onSt原创 2016-10-29 13:30:07 · 1414 阅读 · 0 评论 -
AsyncTask使用、源代码、优缺点分析
使用:onPreExecute(),在后台任务开始执行之前调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框(主线程中执行);doInBackground(Params...),在这里处理耗时任务,任务完成后可以通过return语句将任务的执行结果返回,在这个方法中不可以进行UI操作,如果需要更新UI元素,比如说反馈当前任务的执行进度,可以调用publishProgress(Pro原创 2016-10-29 14:10:44 · 528 阅读 · 0 评论 -
Intent显示和隐式的区别
显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用Intent.setComponent()、Intent.setClassName()或Intent.setClass()方法或者在new Intent(A.this,B.class)指明需要转向到的Activity,显式意图明确指定了要激活的组件是哪个组件,一般是在应用程序内部使用。原创 2016-10-29 16:34:52 · 4317 阅读 · 0 评论