[英]How to update a widget that depends on AsyncTask
我正在创建一个需要建立网络连接以更新其信息的小部件。
我几乎都在为Widgets使用Android Studio样板模板,它的onUpdate
方法附带了:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
}
其中updateAppWidget
是一个静态函数。
问题是我正在利用AsyncTask
建立网络连接,检索一些数据并更新小部件的值:
private class APIQuery extends AsyncTask<Connection, Integer, String> {
@Override
protected String doInBackground(Connection... params) {
// ...
}
}
问题出在updateAppWidget
因为如果我尝试从updateAppWidget
实例化APIQuery
,Android Studio会说我无法从静态方法调用非静态方法。
根据这个答案:
调用非静态方法的唯一方法是实例化类,但如果我实例化APIQuery,那么Android说我必须使updateAppWidget
非静态或APIQuery
静态。
解决这种情况的正确方法是什么? 我是Java和Android开发的新手,在我学习的过程中学习。
您可以尝试从异步任务的onPostExecute方法更新窗口小部件,也可以使用广播接收器向托管活动发送信号以更新窗口小部件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.