亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android實現widget定時更新

系統 1807 0

Java代碼 復制代碼 收藏代碼
  1. public class NewsWidgetProvider extends AppWidgetProvider{
  2. @Override
  3. public void onDeleted(Contextcontext, int []appWidgetIds){
  4. }
  5. @Override
  6. public void onDisabled(Contextcontext){
  7. //TODOAuto-generatedmethodstub
  8. super .onDisabled(context);
  9. }
  10. @Override
  11. public void onEnabled(Contextcontext){
  12. //TODOAuto-generatedmethodstub
  13. super .onEnabled(context);
  14. }
  15. @Override
  16. public void onUpdate(Contextcontext,AppWidgetManagerappWidgetManager, int []appWidgetIds){
  17. NewsService.updateAppWidgetIds(appWidgetIds);
  18. context.startService( new Intent(context,NewsService. class ));
  19. }
  20. public static RemoteViewsupdateAppWidget(Contextcontext,List<RssNews>list){
  21. RemoteViewsviews= new RemoteViews(context.getPackageName(),R.layout.appwidget_layout);
  22. if (list.size()> 3 ){
  23. views.setTextViewText(R.id.textView01,list.get( 0 ).title);
  24. views.setTextViewText(R.id.textView02,list.get( 1 ).title);
  25. views.setTextViewText(R.id.textView03,list.get( 2 ).title);
  26. }
  27. IntentdetailIntent= new Intent(context,NewsSiteList. class );
  28. PendingIntentpending=PendingIntent.getActivity(context, 0 ,detailIntent, 0 );
  29. views.setOnClickPendingIntent(R.id.textView01,pending);
  30. views.setOnClickPendingIntent(R.id.textView02,pending);
  31. views.setOnClickPendingIntent(R.id.textView03,pending);
  32. return views;
  33. }
  34. @Override
  35. public void onReceive(Contextcontext,Intentintent){
  36. super .onReceive(context,intent);
  37. }
  38. }
    public class NewsWidgetProvider extends AppWidgetProvider {


	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
	}

	@Override
	public void onDisabled(Context context) {
		// TODO Auto-generated method stub
		super.onDisabled(context);
	}

	@Override
	public void onEnabled(Context context) {
		// TODO Auto-generated method stub
		super.onEnabled(context);
	}

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

		NewsService.updateAppWidgetIds(appWidgetIds);
		context.startService(new Intent(context,NewsService.class));
	}
	
	public static RemoteViews updateAppWidget(Context context,List<RssNews> list) {
		RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.appwidget_layout);
		if (list.size() > 3) {
			views.setTextViewText(R.id.textView01, list.get(0).title);
			views.setTextViewText(R.id.textView02, list.get(1).title);
			views.setTextViewText(R.id.textView03, list.get(2).title);
		}

		Intent detailIntent=new Intent(context,NewsSiteList.class);
		
		PendingIntent pending=PendingIntent.getActivity(context, 0, detailIntent, 0);
		views.setOnClickPendingIntent(R.id.textView01, pending);
		views.setOnClickPendingIntent(R.id.textView02, pending);
		views.setOnClickPendingIntent(R.id.textView03, pending);
		return views;
	}
	
	@Override
	public void onReceive(Context context, Intent intent) {
		super.onReceive(context, intent);
	}

}
  


Service:
Java代碼 復制代碼 收藏代碼
  1. public class NewsService extends Service implements Runnable{
  2. private static final StringTAG= "NewsService" ;
  3. private static Queue<Integer>sAppWidgetIds= new LinkedList<Integer>();
  4. public static final StringACTION_UPDATE_ALL= "com.xxxx.news.UPDATE_ALL" ;
  5. private static boolean sThreadRunning= false ;
  6. private static ObjectsLock= new Object();
  7. @Override
  8. public IBinderonBind(Intentintent){
  9. return null ;
  10. }
  11. public static void updateAppWidgetIds( int []appWidgetIds){
  12. synchronized (sLock){
  13. for ( int appWidgetId:appWidgetIds){
  14. sAppWidgetIds.add(appWidgetId);
  15. }
  16. }
  17. }
  18. public static int getNextWidgetId(){
  19. synchronized (sLock){
  20. if (sAppWidgetIds.peek()== null ){
  21. return AppWidgetManager.INVALID_APPWIDGET_ID;
  22. } else {
  23. return sAppWidgetIds.poll();
  24. }
  25. }
  26. }
  27. private static boolean hasMoreUpdates(){
  28. synchronized (sLock){
  29. boolean hasMore=!sAppWidgetIds.isEmpty();
  30. if (!hasMore){
  31. sThreadRunning= false ;
  32. }
  33. return hasMore;
  34. }
  35. }
  36. @Override
  37. public void onCreate(){
  38. super .onCreate();
  39. }
  40. @Override
  41. public void onStart(Intentintent, int startId){
  42. super .onStart(intent,startId);
  43. if ( null !=intent){
  44. if (ACTION_UPDATE_ALL.equals(intent.getAction())){
  45. AppWidgetManagerwidget=AppWidgetManager.getInstance( this );
  46. updateAppWidgetIds(widget.getAppWidgetIds( new ComponentName( this ,NewsWidgetProvider. class )));
  47. }
  48. }
  49. synchronized (sLock){
  50. if (!sThreadRunning){
  51. sThreadRunning= true ;
  52. new Thread( this ).start();
  53. }
  54. }
  55. }
  56. @Override
  57. public void run(){
  58. SharedPreferencessetting=getSharedPreferences( "com.xxxx.news_preferences" , 0 );
  59. StringupdateTime=setting.getString( "list_time" , "1800000" );
  60. StringupdateUrl=setting.getString( "list_site" , "xxxxxxxxx" );
  61. AppWidgetManagerappWidgetManager=AppWidgetManager.getInstance( this );
  62. RemoteViewsupdateViews= null ;
  63. while (hasMoreUpdates()){
  64. int appWidgetId=getNextWidgetId();
  65. List<RssNews>listNews=NewsContenttList.getNewsList(updateUrl);
  66. if (listNews!= null ){
  67. updateViews=NewsWidgetProvider.updateAppWidget( this ,listNews);
  68. }
  69. if (updateViews!= null ){
  70. appWidgetManager.updateAppWidget(appWidgetId,updateViews);
  71. }
  72. }
  73. IntentupdateIntent= new Intent(ACTION_UPDATE_ALL);
  74. updateIntent.setClass( this ,NewsService. class );
  75. PendingIntentpending=PendingIntent.getService( this , 0 ,updateIntent, 0 );
  76. Timetime= new Time();
  77. long nowMillis=System.currentTimeMillis();
  78. time.set(nowMillis+Long.parseLong(updateTime));
  79. long updateTimes=time.toMillis( true );
  80. Log.d(TAG, "requestnextupdateat" +updateTimes);
  81. AlarmManageralarm=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
  82. alarm.set(AlarmManager.RTC_WAKEUP,updateTimes,pending);
  83. stopSelf();
  84. }
  85. }

Android實現widget定時更新


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产福利视频一区美女 | 日本护士一级毛片在线播放 | 中文字幕日韩高清 | 四虎影院免费视频 | 天天综合天天综合 | 久久精品99香蕉国产 | 亚洲国产爱久久全部精品 | 色涩网站在线观看 | 狠狠的日| 色婷婷久久免费网站 | 999热在线精品观看全部 | 久久久久久久99精品免费 | 四虎影视国产精品婷婷 | 久久图片 | 香港三级做爰大爽视频 | 日日操狠狠干 | 91中文字幕在线一区 | 九九这里只有精品视频 | 婷婷的久久五月综合先锋影音 | 欧美日韩一本大道香蕉欧美 | 亚洲视频精品在线 | 又黄又爽又色的免费毛片 | 国产主播在线播放 | 欧美黄色录像视频 | 香蕉免费看一区二区三区 | 日本美女一区 | 亚洲视频久久 | 国产精品k | 久久亚洲精品中文字幕二区 | 四虎视频在线精品免费观看 | 天天操天天操 | 亚洲午夜久久久久中文字幕久 | 神马影院午夜我不卡 | 国产成人免费视频 | 精品国免费一区二区三区 | 91亚洲国产成人精品性色 | 久久欧美久久欧美精品 | 国产69精品久久久久999小说 | 亚洲精品资源在线 | 中文字幕日韩在线 | 亚洲欧美小视频 |