07 2012 档案
摘要:Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧. 1.Dalvik VM的本地方法 android.os.Process.killProcess(android.os.Process.myPid()) //获取PID,目前获取自己的也只有该API,否则从/proc中自己的枚举其他进程吧,不过要说明的是,结束其他进程不一定有权限,不然就乱套了。 System.exit(0); //常规java、c#的标准
阅读全文
摘要:ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结。 ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器, 相应地ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。 熟悉Content Provider.
阅读全文
摘要:地址:http://blog.csdn.net/qinjuning 前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结。 ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器, 相应地ContentObse...
阅读全文
摘要:对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的播放控制操作。这里有两种类型的弧线。由一个箭头开始的弧代表同步的方法调用,而以双箭头开头的代表的弧线代表异步方法调用。通过这张图,我们可以知道一个MediaPlayer对象有以下的状态:1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态。当调用了release()方法后,它就处于End状态。这两种
阅读全文
摘要:除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下: 一、根据Context获取SharedPreferences对象 二、利用edit()方法获取Editor对象。 三、通过Editor对象存储key-value键值对数
阅读全文
摘要:Android 使用SQLiteOpenHelper对数据库进行版本管理 因为我们开发的软件可能会安装在成百上千个用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软件时创建出应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新。那么,我们如何才能实现在用户初次使用或升级软件时自动在用户的手机上创建出应用需要的数据库表呢?总不能在每个需要安装此软件的手机上通过手工方式创建数据库表吧?因为这种需求是每个数据库应用都要面临的,所以在Android系统,为我们提供了一个名为SQLiteOpenHelper的抽象类,必须继承它才能使用,它
阅读全文
摘要:Service是Android系统提供的四大组件之一,它的地位和Activity的并列的,只不过没有Activity的使用频率高。顾名思义Service就是运行在后台的一种服务程序,一般情况下,很少和用户交互,最大的特点就是没有可视化界面。 定义一个Service类只要继承Service类,实现其生命周期中的方法就可以了。一个定义好的Service必须在AndroidMainifest.xml配置文件中通过<service>或者使用bindService()方法来绑定一个存在的Service,还可以通过RPC(远程进程调用)机制来实现不同进程间Service的调用。Service是
阅读全文
摘要:这个类主要是Android用来实现应用程序之间数据共享的一个应用程序可以将自己的数据完全暴露出去,外界根本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限才可以。一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content pro
阅读全文
摘要:根据Android SDK api文档说明invalidate 方法是用来更新视图(View)的方法,不过这东西的用法比较古怪invalidate 方法如果你直接在主线程中调用,是看不到任何更新的。如果跟线程结合使用的话比如在下面的代码中就会抛出异常UIThread implements Runnable{public void run(){ invalidate(); }}上面的代码会抛出Only the original thread that created a view hierarchy can touch its views。怎么样解决上面的问题呢,如果你有两个View,你需要一个
阅读全文
摘要:我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。方法一:Handler子线程调用Handler的sendMessage(message)发送事件。Java代码 mHandler=newHandler(){ @OverridepublicvoidhandleMessage(Messagemsg){ //操作界面 myText.setText(来自网络的信息); super.handleMessage(msg); }
阅读全文
摘要:在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application。 启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值。 例如,在Application中保存登录状态 AndroidMenifest.xml[html] view plaincopyprint?<applicationandroid:name=".CombankDroid&qu
阅读全文
摘要:一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示"强制关闭".这个时候我们需要把这些
阅读全文
摘要:1.Uri通用资源标志符(Universal Resource Identifier, 简称"URI")。Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。URI一般由三部分组成:访问资源的命名机制。存放资源的主机名。资源自身的名称,由路径表示Android的Uri由以下三部分组成: "content://"、数据的路径、标示ID(可选)举些例子,如:所有联系人的Uri: content://contacts/people某个联系人的Uri: content://contacts/people/5所有图片U
阅读全文
摘要:LayoutInflater作用是将layout的xml布局文件实例化为View类对象。实现LayoutInflater的实例化共有3种方法,(1)通过getSystemService获得 LayoutInflaterinflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES); Viewview = inflater.inflate(R.layout.main, null);(2)从给定的context中获得 LayoutInflaterinflater = LayoutIn...
阅读全文
摘要:BroadcastReceiver 用于异步接收广播Intent。主要有两大类,用于接收广播的:正常广播 Normal broadcasts(用 Context.sendBroadcast()发送)是完全异步的。它们都运行在一个未定义的顺序,通常是在同一时间。这样会更有效,但意味着receiver不能包含所要使用的结果或中止的API。 有序广播 Ordered broadcasts(用 Context.sendOrderedBroadcast()发送)每次被发送到一个receiver。所谓有序,就是每个receiver执行后可以传播到下一个receiver,也可以完全中止传播——不传播给其他r
阅读全文
摘要:+----------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+-------+| id | int(11) | NO | PRI | | || name | varchar(20) | YES | | NULL | || password | varchar(50) | YES | | NULL | || age | int(11) | YES | |.
阅读全文
摘要:+----+----------+----------+------+| id | name | password | age |+----+----------+----------+------+| 2 | zhangsan | qwer | 43 |+----+----------+----------+------+注意:查出来是两行,不是一行。
阅读全文
摘要:ping是DOS命令,一般用于检测网络通与不通 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声清求消息给目的地并报告是否收到所希望的ICMP回声应答。 它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。Ping 是Windows系
阅读全文
摘要:用sharedPreferences保存一个标志位,第一次运行后就把boolean置为false,以后通过读出boolean值来判断,若为false,就知道不是第一次运行。
阅读全文
摘要:虽然,有些代码号称可以过滤掉系统自身的应用程序,但是只要细看代码就会发现,好像里面的那个布尔变量没有起到什么过滤的作用。 方法一:通过获取的安装包(包括安装的与系统自身的应用程序),对其android.content.pm.PackageInfo的packageName 进行过滤,但是Anrodi与google的包比较容易过滤掉,但需要对不同产商进行适配; 方法二:枚举 \data\app 文件夹,其下的*.apk文件 就是本机安装的软件,而\system\App下的*.apk文件就是系统自带的软件,由于普通的程序是无法读取这两个文件夹的,需要root权限吧,因此该方法也行不通(用File..
阅读全文
摘要:HTTP/1.0 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。 HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。 HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在: 1 缓存处理 2 带宽优化及网络连接的使用 3 错误通知的管理 4 消息在网络中的发送 5 互联网地址的维护 6 安全性及完整性
阅读全文
摘要:BroadcastReceiver所对应的广播分两类:普通广播和有序广播。普通广播:通过Context.sendBroadcast()方法来发送,它是完全异步的。所有的receivers(接收器)的执行顺序不确定,因此所有的receivers(接收器)接收broadcast的顺序不确定。这种方式效率更高,但是BroadcastReceiver无法使用setResult系列、getResult系列及abort(中止)系列API有序广播:是通过Context.sendOrderedBroadcast来发送,所有的receiver依次执行。BroadcastReceiver可以使用setResult
阅读全文
摘要:对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。那么,有没有办法直接退出整个应用呢?在2.1之前,可以使用ActivityManager的restartPackage方法。它可以直接结束整个应用。在使用时需要权限android.permission.RESTART_PACKAGES。注意不要被它的名字迷惑。
阅读全文
摘要:1、数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构。 集合结构:除了同属于一种类型外,别无其它关系 线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别。例如:链表可在任意位置插入或删除元素, 而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入,删除操作。树形结构:元素之间存在一对多的关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等) 图形结构:元素之间存在多对多的关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意常用数据结构 :数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表
阅读全文
摘要:Inflater英文意思是膨胀,在安卓中是“扩展”的意思。LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。它的用法有2种:Java代码viewplaincopytoclipboardprint?LayoutInflaterinflat
阅读全文
摘要:Android项目的目录结构:src : 源文件 gen : eclipse自动维护的一个目录 assets : 原生资源目录 res : 二进制资源 drawable : 可绘制资源 layout : 布局描述文件(xml)values : 值资源
阅读全文
摘要:1、发广播2、binderService启动服务,activity可以操作service里面的方法
阅读全文
摘要:1.startService启动服务,与调用者没联系,调用者退出,服务仍然进行。startService启动服务,无法操作服务里面的方法。2.bindService启动服务,服务与调用者绑定在一起,若调用者退出,则服务就会调用onUnbinder—>onDestroy()。bindService启动服务,允许activity操作服务里面的方法。
阅读全文
摘要:安卓每个应用程序的数据都是采用私有的形式进行操作的,不论数据是文件保存还是数据库保存,都不能被外界应用程序访问,ContentProvider将不同应用程序的数据操作标准统一起来,将各个应用程序的数据操作标准表明给其它应用程序。这样一个应用程序就可以按ContentProvider所制定的标准被外部所操作。ContentProvider对外共享数据的好处是统一了数据的访问方式。
阅读全文
摘要:looper比喻成排队买票的队伍,则排队的每个人就是一个message,handler就是维护队伍的管理员
阅读全文
摘要:按home键,activity生命周期 onPause()—>onStop()按back键 调用onPause()—>onStop()—>onDestroy()竖屏变横屏,activity的生命周期:onPause()—>onStop()—>onDestroy()—>onCreate()—>onStart()—>onResume()
阅读全文

浙公网安备 33010602011771号