你必须改变
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);
改为
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
移动Web开发语言被称为“第五次工业革命的原动力”,移动web开发有哪些优点呢?
◆易于开发,新用户易上手,开发周期相对短。
◆自动更新,只要服务器端更新后,所有移动设备也一起更新。
◆可充分利用现有web内容。
目前,各种移动web开发的框架也纷纷到来,相信您也会很快投入其中!下面简单介绍一下各种框架。
iUI: 它是一个javascript和css库,用于在网页中模拟iphone的外观和感觉。虽然是专为iphone设计的UI,但在android上90%以上的功能是完全可以使用的,因为android和iphone一样,都是基于webkit浏览器的系统。
官方:http://code.google.com/p/iui/
jQTouch: 是一个用于移动web开发的jquery插件,支持iphone,ipod touch和其它一些基于webkit的系统。
官方:http://www.jqtouch.com/
Sencha Touch:可以让你的Web App看起来像Native App。美丽的用户界面组件和丰富的数据管理,全部基于最新的HTML5和CSS3的 WEB标准,全面兼容Android和Apple iOS设备。它是extjs整合jqtouch,Raphaël库的产物。
官方:http://www.sencha.com/products/touch/
jQuery Mobile: 也就是jquery针对移动设备的版本,目前还在紧张的开发中,预计会于年底前发布。主要包括针对移动设备的jquery core和jquery UI。 支持目前主流的移动操作系统(android,iphone,Symbian,Blackbery,webOS等)。我也是本人最期待的一个移动web开发框架。
官方:http://jquerymobile.com/
转载:http://blog.csdn.net/getclass/archive/2010/03/02/5340244.aspx
==================================================================================
这几天的学习,都是Android很实用的地方.所以练习起来,特别的有精神.今天主要学习的是Android中,统一数据访问的方式,和一些为了方便开 发.由系统提供的一些实用的工具类.如:用于匹配Uri的UriMatcher和获取Uri路径后面ID的ContentUris.这在工作中一定会用到 的,所以要认真的终结.
1.使用ContentProvider共享数据
1)继承 ContentProvider 并重写方法
ContentProvider创建后就会被调用:public boolean onCreate()
供外部应用往ContentProvider添加数据:public Uri insert(Uri uri, ContentValues values)
供外部应用从ContentProvider删除数 据:public int delete(Uri uri, String selection, String[] selectionArgs)
供 外部应用更新ContentProvider中的数据:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
供外部应用从 ContentProvider中获取数据:public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
返回当前Url所代 表数据的MIME类型:public String getType(Uri uri)
2)在 AndroidManifest.xml 使用 <provider> 对该 ContentProvider 进行配置
<provider android:name=".PersonContentProvider" android:authorities="cn.itcast.provider.personprovider"/>
3)使用ContentResolver操作ContentProvider中的数据 - 添加数据:public Uri insert(Uri uri, ContentValues values)
-删除数据:public int delete(Uri uri, String selection, String[] selectionArgs)
-更新数 据:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
-获取数据:public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
总结:
--ContentProvider共享数据是程序和程 序之间通信用的.
--继承ContentProvider类
--统一了数据访问方式
2.Uri
Uri代表 要操作的数据
content://cn.itcast.provider.personprovider/person/10
-scheme:content://
- 主机名或authority:cn.itcast.provider.personprovider
-路径:/person/10
总结:
--Uri 主要包含了两部分信息:需要操作的 ContentProvider,对ContentProvider中的什么数据进行操作
--要操作 person 表中 id 为 10 的记录,可以构建这样的路径 :/person/10
--要操作 person 表中 id 为 10 的记录的 name 字段, person/10/name
--要操作 person 表中的所有记录,可以构建这样的路径 :/person
--要操作 xxx 表中的记录,可以构建这样的路径 :/xxx
3.UriMatcher
UriMatcher 类用于匹配Uri
UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
添 加需要匹配uri,如果匹配就会返回匹配 码:sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1);//
sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);
switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) {
case 1
break;
case 2
break;
default:// 不匹配
break;
}
总结:
--常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码
--# 号为通配符
4.ContentUris
ContentUris 类用于获取Uri路径后面的ID部分
1)为路径加上ID: withAppendedId(uri, id)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
Uri resultUri = ContentUris.withAppendedId(uri, 10);
--生成后的 Uri 为: content://cn.itcast.provider.personprovider/person/10
2)从路径中获取ID: parseId(uri)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")
long personid = ContentUris.parseId(uri);
--获取的结果为 :10