摘要:当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。 何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onR...
阅读全文
摘要:1 try {2 3 packagemanager pm = getPackageManager();4 5 PackageInfo pinfo = pm.getPackageInfo(gerPackageName(), PackageManager.GET_CONFIGURATIONS);6 String versionCode = pinfo.versionName;7 Strint versionName = pinfo.versionCode;8 } catch (NameNotFoundException e) {9 }A...
阅读全文
摘要:PX px就是pixel的缩写啦,pixel即像素,它不是自然界的长度单位。px是就是一张图片中最小的点,一张位图就是由这些点构成的。1024px就是1024像素,最简单的你可以在windows桌面属性里的“设置”看到,如果是1024×768,也就是说水平方向上有1024个点,垂直方向上有768个点。谁能说出一个“点”有多长多大么?可以画的很小,也可以很大。如果点很小,那画面就清晰,我们称它为“分辨率高”,反之,就是“分辨率低”。所以,像素的大小是会“变”的,也称为“相对长度”。
阅读全文
摘要:AdapterView是ViewGroup的子类,他的子View由一个绑定了某种数据类型的适配器(Adapter)来决定。当你需要在你的布局中显示存储的数据(不同于资源字符串或绘图资源)时,AdapterView 就非常有用。Gallery, ListView, 和 Spinner是AdapterView 的一个示例子类,你可以用来绑定指定类型的数据并且以某种方式显示。AdapterView 对象有两个主要职责:用数据填充布局处理用户的选取用数据填充布局(Filling the Layout with Data)把数据插入布局的典型做法是把AdapterView类绑定到一个适配器(Adapte
阅读全文
摘要:安裝Cygwin 要安裝的packages如下: Net -> curl Devel -> git* (git, git-completion, git-gui, gitk) Libs -> libreadline6, libiconv2 Editors -> vim Python -> python 下载整个源码 (启动Cygwin之后,开始Repo) $ cd ~ $ mkdir bi...
阅读全文
摘要:Notifications 某些情况下需要通知用户你的应用程序中发生了一个事件。一些事件请求用户应答而另外一些则不需要。比如: 当一个事件比如保存文件结束时,应该出现一条消息确认保存成功。 如果一个后台运行的应用程序需要用户关注,这个应用程序应该创建一个通知来允许用户在方便时进行应答。 如果这个应用程序在执行一个用户必须等待的任务(比如加载一个文件),那么应用程序应该显示一个盘旋的进度轮或...
阅读全文
摘要:Dialogs 对话框通常是一个显示在当前活动前面的小窗口。下面的活动失去焦点而由对话框接受所有的用户交互。对话框通常被用来当做通知或者运行中的应用程序相关的短暂活动。 Android API支持下面的对话框对象类型: 警告对话框AlertDialog 这个对话框管理0,1,2,或3个按钮,和/或一个可包含复选框和单选按钮的可选项列表。这个警告对话框能够组建大多数用户界面而且是推荐使用的对话...
阅读全文
摘要:android 中自定义的对象的序列化方法:implements Parcelableimplements Serializable。一 序列化原因:永久性保存对象,保存对象的字节序列到本地文件中;通过序列化对象在网络中传递对象;通过序列化在进程间传递对象。二 至于选取哪种可参考下面的原则:在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的
阅读全文
摘要:Android提供了三种基础菜单类型: 选项菜单Options Menu这是一个活动的主菜单。通过按下设备菜单键来显示它。选项菜单包含两组菜单项:图标菜单Icon Menu这个是当用户按下菜单键时最初出现屏幕下方的item集合。它支持最多6个菜单项。只有这些菜单支持图标而且这些菜单并不支持checkboxes或者radio buttons。扩展菜单Expanded Menu这是通过按“更多”菜单...
阅读全文
摘要:在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率。其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地在开发者设计,调试和调整界面时,提高用户的开发效率。本文将以一个实际例子讲解如何使用该款工具运用在Android的开发过程中。本文的读者对象为具备初步Android知识的用户。步骤1 设计界面 在我们的这个例子中,有三个不同的界面,以方便我们演示使用Hierarchy Viewer。每一个界面都使用了LinearLayout和FrameLayout布局,以及文本框TextView及图片框ImageV.
阅读全文
摘要:Input Events 在Android上,不止一个途径来侦听用户和应用程序之间交互的事件。对于用户界面里的事件,侦听方法就是从与用户交互的特定视图对象截获这些事件。视图类提供了相应的手段。 在各种用来组建布局的视图类里面,你可能会注意到一些公共的回调方法看起来对用户界面事件有用。这些方法在该对象的相关动作发生时被Android框架调用。比如,当一个视图(如一个按钮)被触摸时,该对象上的onTo...
阅读全文
摘要:定义布局 布局指的是Activity中的UI的结构。它定义了布局结构并持有所有用户能看到的元素。你可以有两种方式来定义你的布局: 在xml中定义UI元素。Android提供了一整套和各种View类对应的易懂的xml语法,例如各种widget和layout等。 在运行时初始化Layout元素。你的应用程序可以使用代码创建View和ViewGroup对象。 Android框架通过这两种方法并存的...
阅读全文
摘要:用户界面 在一个Android应用程序中,用户界面使用View和ViewGroup对象建立。view和view group有很多种,均为View类的子类。 View对象是用户界面的基本单元。View类是widget的父类,widget为系统内置ui对象,如文本框和按钮等等。ViewGroup类为layout类的父类,layout为不同种类的布局结构,例如线型、表格型和相对型。 一个View对象...
阅读全文
摘要:Content Providers Content provider存储和检索数据并使得所有应用程序可以轻松的使用数据。这是应用程序之间分享数据的唯一途径;没有普通的存储区使得所有Android包可以通过。 Android使用很多content provider来运送普通数据类型(audio, video, images,个人通讯信息等)。你可从android.provider包中找到它们。你可...
阅读全文
摘要:Bound Servicesbound service在客户端-服务器接口中作为服务器。一个bound service允许组件(比如activity)绑定到service,发送请求,接收响应,甚至执行进程间通信(IPC)。一个bound service通常在为其他程序组件服务时才存在并且不会无限期的在后台运行。这个文档将显示如何创建一个bound service,包括如何绑定到其他应用程序的service。基本原理一个bound service是一个Servcie类的实现,它允许其他应用程序绑定到它上面并与之交互。为了为service提供绑定,你必须实现onBind()回调函数。这个函数返回一
阅读全文
摘要:Services Service是一个可以在后台执行长时间操作的程序组件,它不提供用户接口。一个应用程序可以启动一个service,即使用户切换到其它应用程序,它也会继续在后台运行。此外一个组件可以绑定到一个service来与它交互甚至是用户进程之间的通信(IPC)。比如说,一个service或许处理网络事务,播放音乐,执行文件I/O或者与一个content provider相互作用,所有的都在后...
阅读全文
摘要:HandlerThread类实现了Looper的循环处理消息的功能package mars.handler;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;public class HandlerTest2 extends Activity { @Override protected void onCreate(Bundl
阅读全文
摘要:一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的...
阅读全文
摘要:使用Handler+Message的方式进行通信,都是在同一个进程中,从线程持有一个主线程的Handler对象,并向主线程发送消息。而Android既然可以使用bindler机制进行跨进行通信,所以我们当然可以将Handler与bindler结合起来进行跨进程发送消息。Messenger:信使官方文档解释:它引用了一个Handler对象,以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信),在服务端使用Handler创建一个Messenger,客户端持有这个M
阅读全文
摘要:Android通过Looper、Handler来实现消息循环机制,它是针对线程的(每个线程都可以有自己的消息队列和消息循环). Android系统中Looper负责管理线程的消息队列和消息循环。可以通过Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的 Looper对象。 前面提到Android系统的消息队列和消息循...
阅读全文