我知道的widget~

1,xml文件下
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/timeshow"
    android:minHeight="72dip"
    android:minWidth="146dip"
    android:updatePeriodMillis="0" >
</appwidget-provider>

2,Androidmanifest.xml
<receiver android:icon="@drawable/robot" android:name=".AppWidget" android:label="@string/app_name">
		<intent-filter>
		<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
		</intent-filter>
		<meta-data android:resource="@xml/timewidget" android:name="android.appwidget.provider"></meta-data>
	</receiver>

3, java中 AppWidget 继承 AppWidgetProvider 重写方法onUpdate
eg:
public class AppWidget extends AppWidgetProvider {
	private static Time mTime = new Time();
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		super.onUpdate(context, appWidgetManager, appWidgetIds);

		context.startService(new Intent(context, WidgetService.class));
	}}

WidgetService 是不断刷新widget的一个服务。

public class WidgetService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		
		AppWidgetManager manager=AppWidgetManager.getInstance(this);
		RemoteViews views=AppWidget.getTimeView(this);
		int[] appids=manager.getAppWidgetIds(new ComponentName(this, AppWidget.class));
		manager.updateAppWidget(appids, views);
		
		//获取当前时间
		long now =System.currentTimeMillis();
		long unit=1000;//间隔一秒
		
		PendingIntent pintent=PendingIntent.getService(this, 0, intent, 0);
		
		//计时器
		AlarmManager alarm=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
		//AlarmManager.RTC_WAKEUP设置服务在系统休眠时同样会运行
		//第二个参数是下一次启动service时间
		alarm.set(AlarmManager.RTC_WAKEUP, now+unit, pintent);
	}



这里有一个widget的刷新的好列子

猜你喜欢

转载自dengzhangtao.iteye.com/blog/1826092
今日推荐