Android进阶
Hel1C
这个作者很懒,什么都没留下…
展开
-
Android Service 服务详细讲解
Android 的Service 和 Handler一样很重,如需了解Handler,请查看Android Handler 异步消息机制下面我们具体讲解一下Service:[b]Service概念及用途:[/b]Service 是 Android 系统中的一种组件,它和Activity 的级别差不多,但又Activity不同,它是不能与用户交互的,但可以和其他组件进行交互。它不...2012-01-16 09:38:10 · 108 阅读 · 0 评论 -
Android多线程:AsyncTask的分析
开发Android应用的过程中,我们需要时刻注意保障应用的稳定性和界面响应性,因为不稳定或者响应速度慢的应用将会给用户带来非常差的交互体验。在越来越讲究用户体验的大环境下,用户也许会因为应用的一次Force Close(简称FC)或者延迟严重的动画效果而卸载你的应用。由于现在的应用大多需要异步连接网络,所以以构建网络应用为例,从稳定性和响应性两个角度分析多线程网络任务的性能优化方法。为了不...2012-04-05 13:34:11 · 103 阅读 · 0 评论 -
Android异步4:深入AsyncTask原理
AsyncTask的本质是一个线程池,所有提交的异步任务都会在这个线程池(想想C3P0)中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。还是以昨天的例子为例~来说明AsyncTask的实现原理[code="java"] package cn.caiwb.aysnc; ...2012-03-01 09:12:47 · 180 阅读 · 0 评论 -
Android异步3:AsyncTask更新UI
前天写了Thread+Handler的方式实现了异步更新UI界面,而且昨天也分析了源码,肯定对异步的原理和实现有了一定的了解。今天用AsyncTask来实现同样的功能。AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类。AsyncTask的内部实现是一个线程池(学过JAVA的肯定了解C3P0等~ ),每个后台任务会提交到线程池中的线程执...2012-02-29 10:13:24 · 79 阅读 · 0 评论 -
Android异步2:深入详解 Handler+Looper+MessageQueue
Android使用消息机制实现线程间的通信,线程通过Looper建立自己的消息循环,MessageQueue是FIFO的消息队列,Looper负责从MessageQueue中取出消息,并且分发到消息指定目标Handler对象。Handler对象绑定到线程的局部变量Looper,封装了发送消息和处理消息的接口。例子:在介绍原理之前,我们先介绍Android线程通讯的一个例子,这个例子实现...2012-02-28 10:15:22 · 79 阅读 · 0 评论 -
Android异步1:Thread+Handler更新UI
每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会报错: CalledFromWrongThreadException:only the or...2012-02-27 14:01:42 · 101 阅读 · 0 评论 -
WebView及js
在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法第一步:新建一个Android工程,命名为WebViewDemo第二步:修改main.xml布局文件,增加了一个WebView控件还有Button控件,代码如下:[code...2012-02-20 09:37:02 · 102 阅读 · 0 评论 -
Android用线程应注意
我们都知道Hanlder是线程与Activity通信的桥梁,我们在开发好多应用中会用到线程,有些人处理不当,会导致当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程数就越多,你的机器就会变得越慢。为了方便 大家理解,我写一个简单的Demo.功能就是每2秒中将应用的Title更换一次。具体步骤如下:...2012-02-17 09:36:50 · 65 阅读 · 0 评论 -
Android Google Api 获取地址
我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需呀通过Location获取GeoPoint,然后在通过GeoPoint来获取我们想要的Address.第一步新建一个Android工程LocationDemo,第二步: 修改main.xml[cod...2012-02-16 09:38:16 · 207 阅读 · 0 评论 -
Android获取经纬度
Location 在Android 开发中还是经常用到的,比如 通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发).等。而在Android 中通过LocationManager 来获取Location .通常获取Location 有GPS 获取,WIFI 获取。第一步:创建一个Android 工程命名为Locatio...2012-02-16 09:34:15 · 93 阅读 · 0 评论 -
Android启动已安装应用
如何在一个应用中 通过某个事件,而去启动另外一个已安装的应用。写一个简单的Demo,我们的程序有俩个按钮一个点击会启动自己写的应用而另外一个按钮会启动系统自带的日历一、新建一个Android工程命名为StartAnotherApplicationDemo. 二、修改main.xml布局,代码如下:[code="java"] ...2012-02-15 22:45:24 · 122 阅读 · 0 评论 -
Android 获取Ip
我们开发中,有判断手机是否联网,或者想获得当前手机的Ip地址,当然WIFI连接的和我们3G卡的Ip地址当然是不一样的.首先我尝试了如下方法[code="java"]WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManag...2012-02-15 22:41:16 · 79 阅读 · 0 评论 -
布局定义菜单--MenuInflater的使用
传统意义上的定义菜单感觉比较繁琐,当我们使用MenuInflater来生成菜单,会发现是多么的爽朗效果图[img]http://hi.csdn.net/attachment/201004/23/0_1272037742gth3.gif[/img]一、建立一个Android 工程我们命名为MenuInflaterDemo .二、在res 目录下创建menu 目录,并且创建...原创 2012-02-14 10:42:03 · 158 阅读 · 0 评论 -
LayoutInflater的使用
在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。一个简单的Demo,主布局main.xml里有一个TextView和一个But...2012-02-13 11:58:56 · 70 阅读 · 0 评论 -
自定义属性
在xml 文件里定义控件的属性,我们已经习惯了android:attrs="" ,那么我们能不能定义自己的属性能,比如:test:attrs="" 呢?答案是肯定的.好了我就不卖关子了,直接进入主题。大致以下步骤:一、 在res/values 文件下定义一个attrs.xml 文件.代码如下:[code="java"] 一、在res/values文件下定义一个attr...原创 2012-02-13 11:54:20 · 91 阅读 · 0 评论 -
自定义View
对于初学着来说,他们习惯了Android 传统的页面布局方式,如下代码:[code="java"][/code]当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:[code="java"] ...原创 2012-02-13 11:37:20 · 54 阅读 · 0 评论 -
Intent传递对象的两种方法(Serializable,Parcelable)
今天讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口第一步:新建一个Android工程命名为...2012-02-13 10:23:26 · 94 阅读 · 0 评论 -
自定义窗口标题
我们看到过很多应用,他们的窗口标题行都不是系统默认的 要么有按钮呀之类的, 具体是怎么实现的呢, 让我们一起来看看吧。步骤:1.提供自定义标题界面,如: R.layout.title[code="title.xml"] [/code]2.在Activity的onCreate()方法中添加如下代码:[code="Activity的onCreate()"]reques...原创 2011-11-06 14:10:54 · 91 阅读 · 0 评论 -
Android多线程:预读实现
上一篇博文我们可以知道,使用AsyncTask有导致应用FC的风险,而且AsyncTask并不能满足我们一些特定的需求。下面我们介绍一种通过模仿AsyncTask的封装方式,实现一个后台预读数据的线程。描述:在空闲时对获取成本较高的数据(如要读取本地或网络资源)进行预读是提高性能的有效手段。为了给用户带来更好的交互体验,提高响应性,很多网络应用(如新闻阅读类应用)都在启动的时候进行预读,把...2012-04-08 00:22:07 · 135 阅读 · 0 评论