=
AppWidget一启动就会启动ForcastTimeService这个后台服务,此服务设置了每隔20秒刷新一次时间,“显示页面”通过这个后台服务获取系统时间从而显示。核心代码如下:
AlarmManager
alarmManager
=
(AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, now + updateMilis, pendingIntent);
至此,后台服务介绍完毕,最后还需要在AndroidManifest.xml文件中注册后台服务。
5.4 用户界面
在用户界面设计上,采用了AppWidget框架结构,提供直观的操作。整个用户界面风格简约、操作简便,用户体验将非常好。
5.4.1 程序入口类
程序运行需要以下四个步骤:
(1)定义Widget布局文件,此文件是res/layout/weather.xml,采用AbsoluteLayout方式进行布局需要注意的是在这个文件中所使用的组件必须是RemoteViews所支持的。
(2)定义Widget的基本属性文件,此文件是/res/xml/weatherwidget.xml。代码如下:
xmlns:android=http://schemas.android.com/apk/res/android android:initialLayout=\//Widget的布局文件
//在启动前首先要启动ConfigureActivity进行设置 android:configure=\ android:minWidth=\ //定义Widget组件的宽度
=
android:minHeight=\//定义Widget组件的高度 android:updatePeriodMillis=\> //更新的时间周期
(3)创建ForecastWidget.java类,此类继承自AppWidgetProvider,主要的功能有:获取需要更新的桌面小控件;启动获取天气预报信息的服务;启动时间信息的服务;更新桌面小控件显示内容;更新时间信息。核心代码如下:
public class ForecastWidget extends AppWidgetProvider {
@Override
void
onUpdate(Context
context,
AppWidgetManager
public
appWidgetManager,int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
// 获取需要更新的桌面小控件
ForecastService.addWidgetIDs(appWidgetIds);
// 启动获取信息的服务
context.startService(new Intent(context, ForecastService.class));
// 启动时间信息的服务
context.startService(new Intent(context, ForecastTimeService.class));
}
//更新桌面小空间显示内容
public static RemoteViews updateViews(Context context, Uri uri) {
}
//更新时间信息
public static RemoteViews updateTime(Context context) {
}
(4)AppWidgetProvider对应一个receiver属性,需要更新AndroidManifest.xml。代码如下:
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: