android桌面时钟小控件开发记录

本文介绍了Android桌面小控件的实现原理,基于BroadcastReceiver的AppWidgetProvider类是核心。通过继承AppWidgetProvider并覆盖其生命周期方法来定制功能。由于AppWidgetProvider不能直接监听系统广播,故在onUpdate中启动Service来实现时间监听。同时提供了布局文件main.xml的示例。
摘要由CSDN通过智能技术生成

所谓桌面小控件,就是能之间显示在Android系统桌面的小程序。

桌面小控件的实现是基于Broadcast的形式实现的,因此,每一个桌面小控件都对应于一个BroadcastReceiver类。Android系统提供了一个AppWidgetProvider类(它就是BroadcastReceiver的子类),这个类很关键,你在写桌面小控件时只需继承这个类就行。继承了AppWidgetProvider类之后,你可以根据自己的需要覆盖它的不同的生命周期的方法,来达到自己的目的。AppWidgetProvider类的主要提供如下不同生命周期的方法:

void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { }
// 这个方法字面意思是负责更新桌面小控件,但貌似只有在小控件被用户放到桌面上时被调用了一次,读者可以自己通过输出Log来测试
// 实现桌面控件是通常都会考虑重写该方法 

void onDeleted(Context context, int[] appWidgetIds)
// 在小控件被删除时调用该方法

一般来说,开发桌面小控件只需要定义一个AppWidgetProvider的子类,并重新写它的pnUpdate方法即可。

下面上代码,有不足之处请指教:

DesktopClock.java,这个类继承了上面说的AppWidgetProvider类(记住它是继承自BroadcastReceiver类):

package org.ls;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;

public class DesktopClock extends AppWidgetProvider {

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {

		Log.e("appwidget", "--update--");
		// 创建RemoteViews对象
		RemoteViews views = new RemoteViews(context.getPackageName(),
				R.layout.main);
		views.setImageViewResource(R.id.double_dot,
				R.drawable.blue_modern_middle);
		// 将刷新UI的service的必要的数据设置好(此处没有使用Bundle传递数据)
		UpdateUIService.appWidgetManager = appWidgetManager;
		UpdateUIService.context = context;
		UpdateUIService.remoteViews = views;
		// 启动刷新UI的Service
		Intent intent = new Intent(context, UpdateUIService.cla
  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值