2012-02-07 5 views
0

毎分sdcardにビットマップをダウンロードして画面に表示するウィジェットを作成する必要があります。私はしようとしましたビットマップをダウンロードして印刷するアンドロイドウィジェットは動作しません

private class MyTime extends TimerTask 

しかし、動作しません。ウィジェットは更新されません:( 画像の合計は30Kです。これで私は助けてくれますか?コードのサンプルが必要です。ウィジェットが動作するためのコードをどこに置くことができますか?

public class MyWidget extends AppWidgetProvider { 
public int tt=0; 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    if(tt==0) { 
     Timer timer = new Timer(); 
     timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 10000); 
     tt=1; 
    } 
} 

private class MyTime extends TimerTask { 

    RemoteViews remoteViews; 
    AppWidgetManager appWidgetManager; 
    long t=0,lastUpdate=0; 
    ComponentName thisWidget; 

    public MyTime(Context context, AppWidgetManager appWidgetManager) { 

     this.appWidgetManager = appWidgetManager; 
     remoteViews = new RemoteViews(context.getPackageName(), R.layout.main); 
     thisWidget = new ComponentName(context, MyWidget.class); 
    } 
    @Override 
    public void run() { 

     DateFormat dateFormat = new SimpleDateFormat("dd/MM HH:mm"); 
     //get current date time with Date() 
     Date date = new Date(); 
    remoteViews.setTextViewText(R.id.Clock,dateFormat.format(date)); 
    appWidgetManager.updateAppWidget(thisWidget, remoteViews); 

     if(t==0 || t + 100000<=System.currentTimeMillis()) { 
      checkUpdate(); 
      display(); 
      t=System.currentTimeMillis(); 
     } 
    } 
+0

「更新しない」とは、UIが変更されていないか、エラーが発生して失敗するか、何か? –

+0

main.xml –

+0

の最初のXMLが残っていて、コードが実行されていることを確認したら、UIの状態を変更する必要がありますか? –

答えて

0

TimerTaskを時限を実行するには、独自のスレッドで実行されますが、あなたは、UI(メイン)スレッド以外のスレッドからAndroidのUIライブラリの呼び出しを行うことは許されません。

ので、これはおそらく失敗していますUIスレッド上でのアクションは、Handlerに割り当て、postDelayed/postAtTimeコールを使用してください。

関連する問題