我有一个app小部件,它从一个url轮询数据并用解析的HTML更新小部件.在预蜂窝装置上,这可以通过服务完成,而无需使用单独的螺纹.现在,在ICS上,这已经改变,并且ASyncThread是必要的.
要访问我使用的Widget-Updater-Service中的TextVIEws
RemoteVIEws remoteVIEws = new RemoteVIEws(getApplicationContext().getPackagename(),R.layout.Widget_layout);remoteVIEws.setTextVIEwText(R.ID.TextVIEw1,"test");
但这似乎不适用于ASyncThread.可能是,当线程试图更改textvIEw时,主服务已经终止了吗?
解决这个问题的任何想法?
解决方法 最好保留自己的RemoteVIEw记录,以便为每个记录进行更新appWidgetID,以便您的私人内部broadcastReceivers可以
更新它.你可以在任何地方使用AppWidgetManager.updateAppWidget()
时间不仅仅是你获得ACTION_UPDATE意图.
Widget.java:
@OverrIDepublic 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); } }}总结
以上是内存溢出为你收集整理的android – 用于更新小部件的AsyncTask – 如何在onPostExecute()中访问textviews?全部内容,希望文章能够帮你解决android – 用于更新小部件的AsyncTask – 如何在onPostExecute()中访问textviews?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)