appWidgetIdごとに更新するRemoteViewの独自の記録を保存して、内部のBroadcastReceiversが に更新できるようにすることをお勧めします。 ACTION_UPDATEインテントを取得したときだけでなく、 の時刻にAppWidgetManager.updateAppWidget()を使用することができます。
Widget.java:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews;
ComponentName watchWidget;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
watchWidget = new ComponentName(context, Widget.class);
// onUpdate is called every xx seconds.
// trigger fetch from the server!
FetchTask fetchTask = new FetchTask();
fetchTask.appWidgetManager = appWidgetManager;
fetchTask.remoteViews = remoteViews;
fetchTask.watchWidget = watchWidget;
fetchTask.execute(PHONE_NUMBERSURL);
}
FetchTask.java:あなたが使用することができます
class FetchTask extends AsyncTask<String, Integer, List<String>> {
protected List<String> doInBackground(String... urls) {
List<String> Sent = new ArrayList<String>();
return Sent;
}
protected void onPostExecute(List<String> result) {
if (appWidgetManager != null) {
String finalString = "sync @";
remoteViews.setTextViewText(R.id.sync_textView, finalString);
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
}
注[StrictMode.ThreadPolicy](http://developer.android.com/reference/android/ os/StrictMode.ThreadPolicy.html)は、UIスレッドでネットワーク操作を実行できるように、Android 3.0以降のデフォルトの動作を変更します。 – yorkw
さらにコードを提供できますか?私はAsyncTaskを使って同様のことを行い、助けになるかもしれません。 –
私は新しいユーザーだから直接コメントできませんが、pastebinに貼り付けています:http://pastebin.com/HQYaJBAm – skyworxx