2010-08-17 44 views
1

我正在嘗試創建一個令人難以置信的簡單小部件,它改變了每5秒左右顯示的文本。不過,我有很多令人頭疼的事情,試圖讓這個工作。顯然,我不能使用onUpdate調用,因爲它至少每30分鐘一次。 目前我的解決方案在一個擴展的Service類中使用了一個Timer,它和地獄一樣醜陋,並且在一段時間後會像狗一樣運行。有沒有一個「乾淨」的方式來做到這一點,即。以不需要Widget,UpdateService,定時器等的方式。我不是要求整個解決方案,只是指示如何以有效的方式進行此操作。改變文本的Android小部件

感謝, 約翰

回答

1

使用CountdownTimer

new CountdownTimer(5000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
    }.start(); 
0

我所做的是增加了以下過程被稱爲在你的微件提供....這樣的...

所以小部件將在接下來的24小時內每隔30秒更新一次....

我也在我的主應用程序代碼中我有幾個偏好,日期,然後我用的是供應商事件,然後調用拉把選項信息計時器....沒有的服務:)

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

     try { 
      final int N = appWidgetIds.length; 
      for (int i=0; i<N; i++) { 
       int appWidgetId = appWidgetIds[i]; 
       updateAppWidget(context, appWidgetManager, appWidgetId); 


      } 

     updateWidgetView(context, context.getSharedPreferences(
        MainActivity.APP_PREFERENCES, 
         Context.MODE_PRIVATE)); 
     } catch (Exception e) { 
       e.printStackTrace(); 
     } 





    } 




public static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager, 
       final int appWidgetId){ 

     Context c; 
     c = context; 
      try { 

       new CountDownTimer(86400, 30000) { 

        public void onTick(long millisUntilFinished) { 
        //do proc every 30sec here. pull prefs and show them        
         SharedPreferences preferencesaa = PreferenceManager.getDefaultSharedPreferences(context); 

          String drinkmsg = preferencesaa.getString("WIDGETTEXT", "You need to drink water."); 

         RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget); 
         updateViews.setTextViewText(R.id.widget_text_threat, drinkmsg.toString()); 

         appWidgetManager.updateAppWidget(appWidgetId, updateViews); 
        } 

        public void onFinish() { 

        } 
        }.start(); 



      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      } 

First App that I am about to release. 8 Cups a Day™

更新
相關問題