
Android专题
文章平均质量分 86
狙击手1986
他山之石,可以攻玉,学海无涯,孜孜不倦
展开
-
Handler机制的原理
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新原创 2017-03-09 14:43:38 · 388 阅读 · 0 评论 -
Android 6种开源框架及简介
Android 6种开源框架及简介转载 2017-02-18 15:07:40 · 670 阅读 · 0 评论 -
Fragment$InstantiationException解决办法
android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.smile.android.open.ui.fragment.LeftBehideListFragment: make sure class name exists, is public, online casinos and has an empty constructor that is public转载 2015-11-09 11:57:44 · 1042 阅读 · 0 评论 -
Android的四种启动模式和onNewIntent()
onNewIntent()非常好用,Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,那就是执行onNewIntent()---->onResart()------>onStart()----->onResume(). 如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会转载 2015-11-05 10:15:12 · 514 阅读 · 0 评论 -
移动IM开发那些事:技术选型和常见问题
[转载] 最近在做一个iOS IM SDK,内测版已出炉,详见http://netease.im。在内部试用的阶段,不断有兄弟部门或者合作伙伴过来问各种技术细节,所以统一写一篇文章记录,统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连接方式,协议选择)和常见问题。转载 2015-11-04 11:13:37 · 440 阅读 · 0 评论 -
Android中全局Application的onCreate多次调用问题
最近重构代码优化性能的时候,在log日志中发现每次启动应用时Application的onCreate执行了多次,导致了重复初始化资源,影响启动时间。最后发现这个是由独立进程引起的,即:process这个属性。一般来说Application的onCreate方法只会执行一次,如果应用中采用多进程方式,oncreate方法会执行多次,根据不同的进程名字进行不同的初始化原创 2015-10-29 14:32:51 · 4153 阅读 · 0 评论 -
移动应用开发必备工具盘点
移动应用开发的路程是艰辛的,在移动应用开发的道路上,一些实用的移动开发工具可以帮开发者更高效地开发应用。下面分享一些比较常用移动应用开发工具。一、项目管理和Bug跟踪工具Redmine:Redmine 是一个基于 Web 的项目管理和 Bug 跟踪工具,在实际开发中,用的最多的就是 Wiki 和 Bug 跟踪。二、产品原型制作工具Axure:产品原型设计工具,如转载 2015-09-30 16:55:18 · 505 阅读 · 0 评论 -
Android开发进阶&优秀开源应用
Android开发进阶&优秀开源应用原创 2015-08-24 11:16:14 · 390 阅读 · 0 评论 -
Android中加载网络资源时的优化可使用(线程+缓存)解决
本文逻辑清晰,内容简单实用,主要讲述了1.异步加载图片,2.图片缓存,3.内存优化等业务实现,是一篇很好的学习样例,喜欢的可以收藏转载(注:本文源自网络)Android 中加载网络资源时的优化,基本的思路是线程+缓存来解决,下面提出一些优化: 1、采用线程池 2、内存缓存+文件缓存 3、内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内转载 2015-08-10 16:05:22 · 470 阅读 · 0 评论 -
Android Activity启动模式
Activity中的栈 Android的管理主要是通过Activity栈来进行,当一个Activity启动时,系统会根据其配置将它压入到一个特定的栈中,系统处于运行状态。当用户点击返回或则FINISH()了该Activity,那么它便会被从栈中压出,随之摧毁,按照Activity的生命周期可以知道,如果当前显示的栈中Activity没有被摧毁,那么打开新的Activity转载 2015-08-05 14:54:22 · 320 阅读 · 0 评论 -
Android自定义绘制图表
最近项目中需要数据统计进行图表展示,无奈设计效果太奇特无法使用一些图表控件来达到效果,只能自己动手绘制,咬牙坚持三天终于有点效果了,记录分享以备后用原创 2015-08-04 17:28:51 · 3281 阅读 · 1 评论 -
Android 应用App测试流程
“细节决定成败”,这句话对于一个开发工程师来说最贴切也最实用了,短短几个字就能体现出一个开发人员的功底,细节,再大的项目都是由若干个业务单元组成,每个单元都有相应的约束,业务单元和约束条件都是细节,对细节理解有多深就体现了对业务的理解有多深,另外,在代码实现上也会更细致更全面,产生的bug也就越少,代码也就更有生命力。如果不注重细节,可能表面上完成的需求功能,但是可能已经埋下了定时炸弹原创 2015-08-04 15:33:42 · 721 阅读 · 0 评论 -
Android应用知识架构清单
基础是一门语言的基石,掌握了基础才能致用,对于一门语言包含哪些基础知识点我们更应该了然于胸,想了解熟知Android开发,那么就要了解它对应的内容。原创 2015-08-03 15:50:22 · 729 阅读 · 0 评论 -
Android数据安全
数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM数据(内部存储)安全 i)android中操作数据库可使用SQLiteOpenHelper或ContentProvider的方式。使用SQLiteOpenHelper操作数据库时,数据库存 放在data/data//databases/目录,这个目录只能是应用自己访问,相对是安全的,但是root用户,这个目录也是转载 2015-07-23 10:19:31 · 600 阅读 · 0 评论 -
Android之Service与Activity通信机制
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介绍两种方式转载 2015-07-16 16:20:04 · 382 阅读 · 0 评论 -
Android技巧:使用Service还是Thread
Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结。 首先,需要了解Service的几个特点。(1) 默认情况下,Service其实是运行在主线程中的,如果需要执行复杂耗时的操作,必须在Service中再创建一个Thread来执行任转载 2015-07-13 14:49:09 · 281 阅读 · 0 评论 -
Android多线程编程小结
我们知道,Android系统为了提高程序的实时响应能力,不允许在UI线程中进行耗时的操作,否则会出现ANR异常,因此必须将耗时的任务放到非UI线程中执行。Android/Java提供了很多类来帮助大家完成异步操作,比如:Thread类,Timer类,AsyncTask类,HandlerThread类,以及Executor接口。这些类都分别在什么场合下使用呢?本文简单地总结一下Android开发转载 2015-07-09 17:01:53 · 351 阅读 · 0 评论 -
Android Fragments (Android官方文档中文版)
概述 Fragment表现Activity中UI的一个行为或者一部分。可以将多个fragment组合在一起,放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment。把fragment想象成一个activity的模块化区域,有它自己的生命周期,接收属于它自己的输入事件,并且可以在activity运行期间添加和删转载 2015-07-03 10:56:23 · 391 阅读 · 0 评论 -
Service的使用详解
Service的概念Service分为本地服务(LocalService)和远程服务(RemoteService):1、本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。主进程被Kill后,服务便会终止。2、远程服务为独立的进程,对应进程名格式为所在包名加上转载 2015-07-02 11:55:50 · 744 阅读 · 0 评论 -
Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。转载 2015-07-01 11:46:10 · 609 阅读 · 0 评论 -
Android消息推送完美解决方案
1.推送方式基础知识: 在移动互联网时代以前的手机,如果有事情发生需要通知用户,则会有一个窗口弹出,将告诉用户正在发生什么事情。可能是未接电话的提示,日历的提醒,或是一封新的彩信。推送功能最早是被用于Email中,用来提示我们新的信息。由于时代的发展和移动互联网的热潮,推送功能更加地普及,已经不再仅仅用在推送邮件了,更多地用在我们的APP中了。 当我们开发需要和服务器交互的应用程转载 2015-06-30 15:08:30 · 701 阅读 · 0 评论 -
Handler源码分析
原理:某个Acitivty的UiThread启动并创建了1个Looper对象,在构造函数Looper()初始化时构造MessageQueue消息队列,并自动执行loop()方法开始循环处理Message消息,其实就是通过msg的target对象Handler回调dispatchMessage()方法。原创 2015-06-02 15:53:26 · 312 阅读 · 0 评论 -
在线阅读android源代码
在线阅读android源代码 http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/转载 2015-06-02 09:46:13 · 295 阅读 · 0 评论 -
android 代码混淆示例
应用背景项目中使用了 slidingmenu actionbarsherlock fastjson volley httpclient 等第三方库,并使用了 webview + js , 有微信和微博分享功能。 # 指定代码的压缩级别-optimizationpasses 5转载 2015-04-17 14:44:02 · 438 阅读 · 0 评论 -
Android消息推送
Android消息推送1.引言 所谓的消息推送就是从服务器端向移动终端发送连接,传输一定的信息。比如一些新闻客户端,每隔一段时间收到一条或者多条通知,这就是从服务器端传来的推送消息;还比如常用的一些IM软件如微信、GTalk等,都具有服务器推送功能。 推送方法如下: 1)通过SMS进行服务器端和客户端的交流通信。 在Android平台上,你可以通过拦截SMS消息并且转载 2015-03-23 14:38:50 · 323 阅读 · 0 评论 -
倒计时功能类CountDownTimer说明及使用
CountDownTimer时android提供的实现倒计时功能的类,相对于java提供的Timer+TimerTask的方式,CountDownTimer使用更加简单,而且是线程安全的。下面是CountDownTimer的使用方法:1.定义CountDownTimer类 class CountDownTime extends CountDownTimer { Vi转载 2014-12-19 15:16:38 · 2247 阅读 · 0 评论 -
SharedPreference文件变化监听器OnSharedPreferenceChangeListener
OnSharedPreferenceChangeListener是Android中SharedPreference文件发生变化的监听器。通常我们想要进行监听,会实现如下的代码。 PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) .registerOnSharedPreferenceChan转载 2014-12-19 10:58:53 · 3279 阅读 · 0 评论 -
Android中几种定时任务的种实现方法
一、采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式)二、采用Handler的postDelayed(Runnable, long)方法(最简单的android实现)三、采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用)一、采用Handle与线程的sleep(long)方法Handler主要用来处理接受转载 2014-11-19 23:20:39 · 359 阅读 · 0 评论 -
Android缓存框架--ASimpleCache
ASimpleCacheASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。1、它可以缓存什么东西?普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。2、它有什么特色?特色主要是:1:轻,轻到只有转载 2014-11-19 23:07:47 · 365 阅读 · 0 评论 -
AsyncTask的优化
大家如果有使用到AsyncTask的话,应该会了解到AsyncTask固然好用,但是它本身设计了对于线程池的一些限制,当运行的AsyncTask实例数量过多的时候会引发RejectedExecutionException异常。例如网络情况较差时,有大量的线程在等待,其根本原因在于AsyncTask本身的设计所限:private static final int CORE_POOL_SIZE =转载 2014-11-04 15:11:17 · 534 阅读 · 0 评论 -
AsyncTask的缺陷
导语:在开发Android应用的过程中,我们需要时刻注意保障应用的稳定性和界面响应性,因为不稳定或者响应速度慢的应用将会给用户带来非常差的交互体验。在越来越讲究用户体验的大环境下,用户也许会因为应用的一次Force Close(简称FC)或者延迟严重的动画效果而卸载你的应用。由于现在的应用大多需要异步连接网络,本系列文章就以构建网络应用为例,从稳定性和响应性两个角度分析多线程网络任务的性能优化方法转载 2014-11-04 11:36:19 · 320 阅读 · 0 评论 -
AsyncTask的原理
概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类。AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。转载 2014-11-04 10:27:27 · 337 阅读 · 0 评论 -
AsyncTask和Handler两种异步方式实现原理和优缺点比较
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点: 1.简单,快捷 2.过程可控 使用的缺点:l.在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.2.Handler异步实现转载 2014-11-03 10:03:58 · 340 阅读 · 0 评论 -
sendMessage与obtainMessage区别
sendMessage()这个方法调用的是Handler中的sendMessage(Message msg)转载 2014-10-31 17:47:55 · 887 阅读 · 0 评论 -
AsyncTask的用法
前言在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的,并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI工具包 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:转载 2014-10-31 14:38:48 · 298 阅读 · 0 评论 -
Android 内存溢出解决方案(OOM)整理总结
在最近做的工程中发现加载的图片太多或图片过大时经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总结,以供朋友们共同交流学习,也供自己以后在解决OOM问题上有所提高,提前讲下,片幅有点长,涉及的东西太多,大家耐心看,肯定有收获的,里面的很多东西小马也是学习参考网络资料使用的,先来简单讲下下:一转载 2014-10-30 17:08:46 · 440 阅读 · 0 评论 -
Android开发--内存泄露调试
学习下OOM的调试方法,找到需要优化的地方,一步步调试OOM首先,先一起来做些内存优化知识的铺垫: Android(Java)中常见的容易引起内存泄漏的不良代码有:1. 查询数据库没有关闭游标 程序中经常会进行查询数据库的操作,但是经常会有使用完毕Cursor后没有关闭的情况。如果我们的查询结果集比较小,对内存的消耗不容易被发现,只有在常时间大量操作的情况下才会复现内存问题,转载 2014-10-30 15:26:11 · 365 阅读 · 0 评论 -
ListView原理与优化总结
想要优化ListView就得先了解ListView加载数据原理列表的显示需要三个元素: 1.ListVeiw: 用来展示列表的View 2.适配器: 用来把数据映射到ListView上 3.数据: 具体的将被映射的字符串,图片,或者基本组件根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,其中以Ar转载 2014-10-30 10:58:16 · 573 阅读 · 0 评论 -
Android开发--内存优化
不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露。其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。如果我们的java运行很久,而这种内存泄露不断的发生,最后就没内存可用了。当然java的,内存泄漏和C/C++是不一样的。如果java程序完全结束后,它所有的对象就都不可达了,系统转载 2014-10-29 23:48:21 · 353 阅读 · 0 评论 -
Handler机制的原理
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 你可以构造Handler对象来与Looper沟通,以便pus转载 2014-10-29 15:22:09 · 335 阅读 · 0 评论