android widget简单开发三之实时刷新widget
16lz
2021-01-25
接上两篇,如果想要实时更新widget的话,可以通过service去操作。
一、先新建一个AppwidgetService服务类继承Service
public class AppWidgetService extends Service { private List strLists = new ArrayList<>(); @Nullable @Override public IBinder onBind(Intent intent) { return null; } private Timer timer; int i = 0; private TimerTask task = new TimerTask(){ @Override public void run() { AppWidgetManager manager = AppWidgetManager.getInstance(getApplicationContext());//获得appwidget管理实例,用于管理appwidget以便进行更新操作 ComponentName componentName = new ComponentName(getApplicationContext(),AppWidget.class);//获得所有本程序创建的appwidget RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.widget_layout);//获取远程视图 remoteViews.setTextViewText(R.id.txt,strLists.get(i)); manager.updateAppWidget(componentName,remoteViews); //每执行一次 i加1; i++; //如果i>6即,strLists最后一个数据,则归零 if (i>6){ i = 0; } } }; @Override public void onCreate() { super.onCreate(); initData(); timer = new Timer(); timer.schedule(task,0,1000);//开始任务 } private void initData(){ strLists.add("我"); strLists.add("我们"); strLists.add("我们去"); strLists.add("我们去哪"); strLists.add("我们去哪里"); strLists.add("我们去哪里啊"); strLists.add("我们去哪里啊?"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); //关闭定时器 timer.cancel(); }}
二、在清单文件中注册AppwidgetService
三、在Appwidget广播接收器中
onEnabled启动服务即第一个widget创建的时候执行
onDisabled停止服务即最后一个widget删除的时候执行
更多相关文章
- android执行远程地址,就会报android.os.Net..... 这个原因是网络
- GestureLibrary增加手势笔记
- Android开发 文件操作
- 基于Android的计算器(代码行数足够用来交大作业)
- [Android]文件操作模式与SDCard读写访问
- android 中文api (63) —— SimpleAdapter.ViewBinder
- Android中Drawable Bitmap Canvas Paint之间区别
- Android(安卓)API 中文(77)――AdapterView.OnItemSelectedListene
- Android(安卓)ViewTreeObserver简介