package com.genius.col;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.widget.RemoteViews;
public class AppClockWidgetProvider extends AppWidgetProvider{
private static RemoteViews mRemoteViews;
private static Timer mTimer;
// mAppWidgetArray 保存窗口部件实例的数组
private static ArrayList<int[]> mAppWidgetArray = new ArrayList<int[]>();
// 当最后一个窗口部件实例被移除时调用
public void onDisabled(Context context) {
// TODO Auto-generated method stub
super.onDisabled(context);
stopTimerTask();
}
// 当第一个窗口部件实例被创建时调用
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
startTimerTask(context);
}
// 窗口部件实例创建时调用
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
updateAppWidget(context, appWidgetManager, appWidgetIds);
addInstance(appWidgetIds);
}
// 窗口部件实例删除时调用
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
removeInstance(appWidgetIds);
}
// 更新单个窗口部件实例
public static void updateAppWidget(Context context,
AppWidgetManager appWidgeManger, int []appWidgetIds) {
mRemoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
MyTimeAdapter timeAdapter = new MyTimeAdapter();
String timeString = timeAdapter.formatTime();
mRemoteViews.setTextViewText(R.id.myTextView, timeString);
appWidgeManger.updateAppWidget(appWidgetIds, mRemoteViews);
}
// 更新所有窗口部件实例
public static void RefreshAllWidget(Context context){
AppWidgetManager appWidgetManger = AppWidgetManager.getInstance(context);
int instanceCount = mAppWidgetArray.size();
for(int i = 0; i < instanceCount; i++){
int[]appWidgetIds = mAppWidgetArray.get(i);
updateAppWidget(context, appWidgetManger, appWidgetIds);
}
}
// 增加窗口部件实例
public static void addInstance(int[] appWidgetIds){
if (mAppWidgetArray != null){
mAppWidgetArray.add(appWidgetIds);
}
}
// 删除窗口部件实例
public static void removeInstance(int[] appWidgetIds){
if (mAppWidgetArray != null){
mAppWidgetArray.remove(appWidgetIds);
}
}
// 开启刷新窗口部件的定时器
public static void startTimerTask(final Context context){
if (mTimer == null){
mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
AppClockWidgetProvider.RefreshAllWidget(context);
}
};
mTimer.schedule(mTimerTask, 0, 1000);
}
}
// 关闭刷新窗口部件的定时器
public static void stopTimerTask(){
if (mTimer != null){
mTimer.cancel();
mTimer = null;
}
}
}
实现android小窗口部件
5星 · 超过95%的资源 需积分: 9 182 浏览量
2013-08-09
22:39:53
上传
评论
收藏 46KB RAR 举报
赖生要崛起
- 粉丝: 0
- 资源: 1
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈