service类
  1. public class WidgetService extends Service
  2. {
  3. @Override
  4. public IBinderonBind(Intentintent)
  5. {
  6. return null ;
  7. }
  8. @Override
  9. public void onStart(Intentintent, int startId)
  10. {
  11. super .onStart(intent,startId);
  12. RemoteViewsrv=new RemoteViews( this .getPackageName(),R.layout.app);
  13. rv.setTextViewText(R.id.av1,new Date().toLocaleString());
  14. ComponentNamecn=new ComponentName( this ,DeskMain. class );
  15. AppWidgetManageram=AppWidgetManager.getInstance(this );
  16. am.updateAppWidget(cn,rv);
  17. }
  18. }
AppWidgetProvider类
  1. public class DeskMain extends AppWidgetProvider
  2. {
  3. @Override
  4. public void onUpdate(Contextcontext,AppWidgetManagerappWidgetManager,
  5. int []appWidgetIds)
  6. {
  7. Log.i("syso" , "update3..................." );
  8. Intentintent=new Intent(context,WidgetService. class );
  9. PendingIntentrefreshIntent=PendingIntent.getService(context,0 ,intent, 0 );
  10. AlarmManageralarm=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
  11. alarm.setRepeating(AlarmManager.RTC,0 , 1000 ,refreshIntent);
  12. context.startService(intent);
  13. }
  14. @Override
  15. public void onReceive(Contextcontext,Intentintent)
  16. {
  17. Log.i("syso" , "receive..................." );
  18. super .onReceive(context,intent);
  19. }
AndroidManifest.xml
  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < manifest xmlns:android = "http://schemas.android.com/apk/res/android"
  3. package = "com.app"
  4. android:versionCode = "1"
  5. android:versionName = "1.0" >
  6. < uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" > </ uses-permission >
  7. < application android:icon = "@drawable/icon" android:label = "@string/app_name" android:screenOrientation = "portrait" android:permission = "android.permission.ACCESS_FINE_LOCATION" >
  8. < activity android:name = ".Main"
  9. android:label = "@string/app_name" >
  10. <!---->
  11. < receiver
  12. android:label = "@string/app_name"
  13. android:name = ".DeskMain" >
  14. < intent-filter >
  15. < action android:name = "android.appwidget.action.APPWIDGET_UPDATE" />
  16. </ intent-filter >
  17. < meta-data android:name = "android.appwidget.provider"
  18. android:resource = "@xml/my_widget_provider" >
  19. </ meta-data >
  20. </ receiver >
  21. < service android:name = "WidgetService" />
  22. </ application >
  23. < uses-sdk android:minSdkVersion = "7" />
  24. </ manifest >



我们在做widget开发时,要解决的主要问题是怎么做到实时刷新,比如当我们在一个activity里点击插入或删除操作时,能够使widget上显示的数据条数刷新
下面是在activity里要实现的代码:
  1. Intentintent= new Intent( "com.android.CLICK" );
  2. ResultActivity.this .sendBroadcast(intent);

我们还要在AndroidMainifest.xml的<intent-filter>里定制:
  1. <actionandroid:name= "com.android.CLICK" ></action>

在widget类里我们用onReceive方法:
  1. //把数据显示上widget
  2. RemoteViewsviews=new RemoteViews(context.getPackageName(),R.layout.main);
  3. StringstrLine=System.getProperty("line.separator" );
  4. views.setTextViewText(R.id.note_text,“要显示的信息”);
  5. //添加响应事件
  6. intent=new Intent(context,OperateActivity. class );
  7. PendingIntentPintent=PendingIntent.getActivity(context,0 ,intent, 0 );
  8. views.setOnClickPendingIntent(R.id.widget,Pintent);
  9. //最后更新
  10. AppWidgetManagerappWidgetManager=AppWidgetManager.getInstance(context);
  11. appWidgetManager.updateAppWidget(new ComponentName(context,Note. class ),views);

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 《Android开发从零开始》——25.数据存储(4)
  4. Android系统配置数据库注释(settings.db)
  5. Android中不同应用间实现SharedPreferences数据共享
  6. Android(安卓)P SystemUI之StatusBar UI布局status_bar.xml解析
  7. android图表ichartjs
  8. android用户界面-组件Widget-地图视图MapView
  9. Android内容提供者源码

随机推荐

  1. android 解决输入法键盘遮盖布局问题
  2. android学习笔记(2)---第一个Android应用程
  3. android 在配置文件中指定上级activity
  4. Android调用WebService系列之KSoap2对象
  5. Android缺乏整体控制或成发展障碍
  6. 如何在eclipse的android工程里引用androi
  7. 一张图带你掌握Android Q上InputDispatch
  8. java和Android都是新手,想学Android,怎样入
  9. Android(安卓)Studio中Run按钮app的modul
  10. Android(安卓)使用Activity用作弹出式Dia