Android
liuke0002
IT屌丝!
展开
-
Android 电量优化
GPS应用中经常会用到定位服务,Android提供了NetWork定位和GPS,相对于来说,GPS会精确的多,对于一些诸如跑步,导航类的应用基本会使用GPS定位,然而,GPS定位也会消耗大量的电量。使用WakeLock或者JobSchedule唤醒设备处理定时的任务之后,一定要及时让设备回到初始状态。每次唤醒蜂窝信息进行数据传递,都会消耗很多电量,它比WiFi等操作更加的耗电。原创 2017-01-12 15:15:50 · 525 阅读 · 0 评论 -
Android面试题之Activity
1.什么是Activity?四大组件之一,一般的,一个用户交互界面对用一个activity,activity是Context的子类,同时实现了window.callback和keyevent.callback,可以处理与窗体用户交互的事件。常用的有FragmentActivity,ListActivity等,抽取BaseActivity2.Activity的生命周期onPost原创 2016-02-29 14:03:07 · 771 阅读 · 0 评论 -
XML bitmap
可以使用位图文件的文件名作为资源ID来直接引用位图文件,也可以在XML中定义一个资源别名。XMl Bitmap是定义在XML文件当中,指向位图文件的资源。这样就为原生的位图文件起了一个别名。在XML定义时可以为位图定制诸如图像抖动或平铺等额外属性。我们可以使用节点作为节点的子节点。比如在创建一个state list或者layer list时,可以不在节点使用android:draw原创 2016-03-13 17:50:24 · 634 阅读 · 0 评论 -
BitmapUtils的相关知识
三级缓存内存缓存:优先加载,速度最快本地缓存:次优先加载,速度快网络缓存:不优先加载,速度慢,浪费流量AsyncTask(实质是对Handler和线程池的封装)使用的优点:简单,快捷,过程可控使用的缺点:在使用多个异步操作和并需要UI更新时,就变得复杂起来Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。要使用AsyncTas原创 2016-02-28 11:48:47 · 401 阅读 · 0 评论 -
Application类
Application类是为了那些需要保存全局变量的基本类,需要在AndroidManifest.xml的application标签中进行自己的实现,当application或者被建立的时候将引起那个类被建立。就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需 要再像j2se那样需要创建public权限原创 2016-03-12 21:18:09 · 538 阅读 · 0 评论 -
自定义控件2
开发自定义控件1.View结构原理Android系统的视图结构也采用了组合模式,即View作为所有图形的基类,ViewGroup对View继承扩展为视图容器类。View定义了绘图的基本操作:基本操作由三个函数完成:measure(),layout(),draw(),其内部又分别包含了onMeasure(),onLayout()、onDraw()三个子方法。具体操作如下:1.原创 2016-04-05 11:46:42 · 322 阅读 · 0 评论 -
自定义控件之下拉刷新
public RefleshListView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initHeadView();}public RefleshListView(Context context, AttributeSet attrs) {super(co原创 2016-02-22 13:04:14 · 467 阅读 · 0 评论 -
Android控件测量相关
在自定义View和ViewGroup时,我们经常会遇到int型的MeasureSpec来表示一个组件的大小,这个变量里面不仅有组件的大小,还有大小的模式。MeasureSpec是一个int型整数,他有32位,而模式有三种,要表示三种状态,至少得2位二进制位。于是系统采用了最高的2位表示模式。最高两位是00的时候表示"未指定模式"。即MeasureSpec.UNSPECIFIED原创 2016-03-18 12:00:44 · 401 阅读 · 0 评论 -
Binder机制(一)
Android Binder机制一.binder通信概述binder通信是一种client-server的通信结构(1)从表面上来看,是client通过获得一个server的代理接口(2)实际上,代理接口中定义的方法与server中定义的方法是一致的(3)client调用某个代理接口中的方法时,代理接口的方法将client传递的参数打包成Parcel对象(4)代理接口将该P原创 2016-03-16 22:42:27 · 317 阅读 · 0 评论 -
事件分发机制
1.事件分发机制中的onTouch和onTouchEvent有什么区别,又该如何使用?这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果onTouch方法中通过返回true将事件消费掉,onTouchEvent将不再会执行。另外需要注意的是,onTouch能够得到执行需要两个前提条件,第一mOnTouchLis原创 2016-03-01 16:34:02 · 526 阅读 · 0 评论 -
Android中的ANR和OOM
内存溢出的几点原因1.资源释放问题程序代码的问题,长期保持某些资源,如Context,Cursor,IO流的引用,资源得不到释放造成内存泄露2.对象内存过大问题保存了多个内存过大的对象,造成内存超出限制3.static关键字的使用问题static是Java中的一个关键字,当用来修饰成员变量时,它的生命周期是很长的,如果用来来引用一些资源耗费过多的实例,这时就需要谨慎了。原创 2016-03-01 12:51:16 · 2585 阅读 · 0 评论 -
自定义控件之SlideMenu
package com.example.view;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;public class原创 2016-02-09 18:19:46 · 406 阅读 · 0 评论 -
自定义控件之滑动开关
滑动开关自定义控件步骤测量:onMeasure()设置自己在屏幕上的宽高布局:onLayout()设置自己显示屏幕上的位置(只有在在自定义ViewGroup中才用到)绘制:onDraw()控制显示在屏幕上的样子(自定义viewGroup时不需要 )View和ViewGroup的区别1.它们都需要进行测量工作2.ViewGroup主要是控制子View如何摆放,所以必须实现原创 2016-02-08 12:15:47 · 432 阅读 · 0 评论 -
Android面试题之Service
1.service是否在main thread中执行,service里面是否能执行耗时的操作?默认情况,如果没有service所运行的进程,Service和Activity是运行在当前app所在进程中的main thread里面service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)特殊情况,可以在清单文件中配置service所在的进程,让service在另外的进程中执行。原创 2016-02-29 18:37:45 · 2912 阅读 · 0 评论 -
ListView各种优化方法
一.ListView如何提高效率当convertView为空时,用setTag()方法绑定一个存放控件的ViewHolder对象。当convertView不为空,重复利用已经创建的view的时候,使用getTag()方法获取绑定的ViewHolder对象,这样就避免了findViewById对控件的层层查询。(1)复用ConvertView,使用历史的view(2)自定义静态类原创 2016-02-29 20:44:47 · 1350 阅读 · 0 评论 -
计步器锁屏后依然工作的原理
Android关闭屏幕的同时禁止硬件进入休眠Screen Off之后,CPU和各种外设(包括WIFI,蓝牙,加速度传感器等等)都停止工作。WakeLock能够禁止Android硬件进入休眠。进程可以创建各种类型的WakeLock,只要系统中还存在WakeLock,那么系统就不会休眠。以下是创建并使能Wake Lock的一般性代码:PowerManager powerManage原创 2016-12-03 16:40:44 · 1801 阅读 · 0 评论 -
view
invalidate()方法说明:请求重绘View树,即draw()过程,假如视图大小没有变化就不会调用layout()过程,并且只绘制那些需要“重新绘制的”视图,若是View,只绘制该View,ViewGroup,则绘制整个ViewGroup请求invalidate()方法,就绘制该视图。一般引起invalidate()操作的函数如下:1.直接调用invalidate()方法原创 2016-04-23 22:42:59 · 356 阅读 · 0 评论 -
内存泄露
1.构造Adapter时,没有使用缓存的convertView以构造ListView的BaseAdapter为例,在BaseAdapter中提供了方法public View getView(int position,View convertView,ViewGroup parent)来向ListView提供每一个item所需要的View对象。初始化时ListView会从BaseAdap原创 2016-09-20 11:09:28 · 383 阅读 · 0 评论 -
Glide源码
1.主要特点(1)支持Memeory和Disk图片缓存(2)支持gif和webp格式(3)根据Activity、Fragment生命周期自动管理请求(4)使用Bitmap Pool可以使用Bitmap复用(5)对于回收的Bitmap会主动调用recycle,减小系统回收的压力2.总体设计自上而下 RequestManager:GenericRequest原创 2016-08-13 11:47:22 · 375 阅读 · 0 评论 -
Android app从安装到启动的过程
APK为AndroidPackage的缩写应用安装涉及到如下几个目录:system/app------系统自带的应用程序data/app -------用户程序安装的目录,安装时把apk文件复制到此目录data/data ------存放应用程序的数据data/dalvik-cache-----将apk中的dex文件安装到dalvik-cache目录下安装过程复制apk原创 2016-09-01 11:22:17 · 2767 阅读 · 0 评论 -
Android开发中的MVP架构
什么是MVP架构MVP就是Model-View-Presenter,MVP是从经典的模式MVC演变而来,它们的基本思想有想通的地方:Controller、Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVC和MVP有着重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Present原创 2016-08-22 11:00:04 · 458 阅读 · 0 评论 -
Ble设备通信
1.Profileprofile可以理解为一种规范,一个标准的同通信协议,它存在于手机中。蓝牙组织规定了一些标准的profile,例如HID OVER GATT,防丢器,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力2.Serviceservice可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个原创 2016-08-19 10:23:33 · 748 阅读 · 0 评论 -
HttpURLConnection和HttpClient
HttpClientDefaultHttpClient和他的小欧诺个地AndroidHttpClient都是HttpClient具体的实现类,他们拥有众多的API,而且实现比较稳定。HttpURLConnectionHttpURLConnection是一种多用途,轻量级的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的程序。虽然HttpURLConnection的AP原创 2016-08-07 09:42:56 · 292 阅读 · 0 评论 -
Android性能优化
1.节制地使用Service如果应用程序当中需要使用Service来执行后台任务的话,请一定要注意只有当任务正在执行的时候才应该让Service运行起来。另外,当任务执行完之后去停止Service的时候,要小心Service停止失败导致内存泄露的情况2.当界面不可见时释放内存当用户打开另外一个程序,程序界面已经不再可见的时候,我们应当将所有和界面相关的资源进行释放。在这种场景下释放资源原创 2016-05-24 10:25:25 · 470 阅读 · 0 评论 -
ViewStub使用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或者某个布局。那么最通常的想法就是把可能用到的View的可见性都设为View.GONE,然后在代码中改变他的可见性。这样做的优点是逻辑简单而且控制起来比较灵活。但是他的缺点是,耗费资源。虽然把View的初始可见View.GONE但是在inflate布局的时候View仍然会被Inflate,也就是说仍原创 2016-07-30 15:21:29 · 380 阅读 · 0 评论 -
Android定位
Android中获取当前位置的三种方式一.GPS(1)GPS定位需要依靠3颗或三颗以上的卫星(2)GPS定位受环境影响较大,在晴朗的空地上,较容易搜索到卫星,而在室内通常是无法搜索到卫星的。(3)GPS定位需要使用GPS功能模块,而GPS功能模块的耗电量是巨大的。在Android系统中,实现GPS定位的思路应该是: 1.获取GPS的Location Provider原创 2016-04-27 11:25:05 · 352 阅读 · 0 评论 -
SparseArray(稀疏数组)
SparseArray代替HashMapSparseArray是Android框架独有的类,在标准的JDK中不存在这个类。他要比HashMap节省内存,某些情况下比HashMap的性能更好,主要是因为SpareArray不需要对key和value进行auto-boxing(将原始类型封装成对象类型,如把int类型封装成Integer类型),结构比HashMap简单(SparseAr原创 2016-03-14 19:32:33 · 678 阅读 · 0 评论 -
ViewPager实现大图轮播
先介绍下ViewPager的相关知识,ViewPager是android3.0之后才出来的新控件,在实现大图轮播时,需要跟ListView一样设置PagerAdapter,实现其中的方法,主要有:1.isViewFromObject(View view,Object object)将要进来的view是否在缓存中返回true:表示不去创建,使用缓存 false:去重新创建一般retu原创 2016-02-07 11:23:23 · 403 阅读 · 0 评论 -
手机卫士笔记
代码组织结构--根据业务逻辑划分办公软件-出差-工资-会议网盘-上传-下载-分享--根据功能模块划分(安卓开发推荐此方法)-Activity com.liuke.mobilesafe.activity-Service com.liuke.mobilesafe.service-BroadcastReceiver com.liuke.mobiles原创 2016-02-05 17:48:27 · 452 阅读 · 0 评论 -
短信拦截相关
短信发送的是一个有序广播接收短信是接收广播的行为4.0之后,广播接收者所在的进程如果从来没有启动过,那么广播接收者不会生效。即使广播接收者所在进程已经被关闭(系统自动关闭),当系统发出的广播的action跟该广播接收者的action匹配时,系统会启动该广播所在的进程,并把广播发给广播接收者。但是如果用户强制关闭进程,只有下次用户手动开启广播时,才能生效。原创 2015-12-08 23:58:31 · 415 阅读 · 0 评论 -
Service
Service概述1.Service是Android的四大组件之一2.Service本质上是后台运行的可执行程序,他没有Activity那样的用户界面3.Service通常不予用户交互,不能自己启动、运行在后台4.Service主要应用于长时间的后台服务以及周期性的后台监控,如:(1)播放多媒体的时候启动了其他Activity,此时程序要在后台继续播放(2)检测SD卡上大文原创 2015-11-27 12:21:43 · 424 阅读 · 0 评论 -
Notification
一、概述Notification是Android中一个重要的系统服务,Notification显示通知信息在手机状态栏,手机状态栏位于屏幕最上方,那是通常显示手机当前的网络状态、电池状态、时间、短信等。Notification代表的是一种具有全局效果的通知,Notification对象要通过NotificationManager(通知管理器类)的对象来发送。二、No原创 2015-11-26 15:56:55 · 610 阅读 · 0 评论 -
ListView的优化
ListView进阶(一)ListView的运行机制1.使用match_parent定义ListView的高度和宽度属性 使用ListView控件的高度和宽度要避免使用wrap_content,否则会导致BaseAdapter.getView重复调用N次。尽量使用match_parent或固定值设置height或width。2.缓存列表项 ListView控原创 2015-11-25 21:51:06 · 353 阅读 · 0 评论 -
图片的内存优化
1.对图片本身进行操作尽量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后,最终都是通过Java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory中的解析方法,创建出一个Bitmap,再将其设为ImageView原创 2015-12-12 23:40:31 · 547 阅读 · 0 评论 -
LIstView
ListView控件一、概述:Android中,列表行控件是数据源为数组或集合的控件列表类型的控件有ListView,GridView,Gallery,Spinner列表型控件支持适配器模式显示数据二、AdapterView类(一)概述AdapterView是ViewGroup的子类,由一个适配器和绑定到适配器的数据集组合而成。当需要在Android的View中显原创 2015-11-25 21:46:30 · 503 阅读 · 0 评论 -
Environment类
1.概述提供访问环境变量的类2.静态方法1).getDataDirectory()作用:返回data目录2).getRootDirectory()作用:返回system目录3).getDownloadCacheDirectory()作用:返回cache目录4).getExternalStorageDirectory()作用:返回sdcard根目录5)ge原创 2015-11-25 16:48:12 · 661 阅读 · 0 评论 -
AndroidIO编程
AndroidIO编程(一)概述当需要存取复杂的、大量的数据是需要IO流操作。Android在Context类中提供了存取文件的方法。(二)常用方法1.InputStream openFileInput(String fileName)作用:读取指定文件名的文件参数fileName:当前项目下data/data/projectPackage/files文件夹下的fileNa原创 2015-11-25 16:45:40 · 434 阅读 · 0 评论 -
多媒体编程(一)
文本、图片、音频、视频图片在计算机中的大小图片的大小=图片的总像素*每个像素占用的大小单色位图:只能表示两种颜色,只用两个数字,只用一个长度为1的二进制数字就可以表示了,每个像素占用1/8个字节16色位图:能表示16钟颜色 需要16个数字:0-15,0000-1111,每个像素占用1/2字节(1字节=8位)256色位图:能表示256中颜色00000000原创 2015-12-12 22:17:14 · 432 阅读 · 0 评论 -
BitmapFactory
(一)概述许多情况下,图片资源从网络、SD卡登出获取,并在程序中显示,因此涉及到图片的加载。Android提供了相关的API可方便地处理图片的读取以及读取中的优化操作。(二)BitmapFactory类该类是一个工具类,提供了大量操作Bitmap对象的方法(三)加载图片称为内存中Bitmap的对象1.public static Bitmap decodeByteArray(by原创 2015-11-25 16:53:43 · 732 阅读 · 0 评论 -
SharedPreferences
共享首选项-SharedPreferences(一)概述有些应用需要保存配置信息,如是否打开音效开关、登录时是否保存上次输入的用户名、密码等。Android对这类应用提供了SharedPreferences(共享首选项),共享首选项适合数据量少、数据已键值对的方式保存的应用。(二)常用类/接口1.SharedPreferences接口作用:该接口定义了共享首选项操作原创 2015-11-24 19:43:40 · 266 阅读 · 0 评论