繁体   English   中英

如何更新依赖于AsyncTask的小部件

[英]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会说我无法从静态方法调用非静态方法。

根据这个答案:

在Java中调用静态方法中的非静态方法

调用非静态方法的唯一方法是实例化类,但如果我实例化APIQuery,那么Android说我必须使updateAppWidget非静态或APIQuery静态。

解决这种情况的正确方法是什么? 我是Java和Android开发的新手,在我学习的过程中学习。

您可以尝试从异步任务的onPostExecute方法更新窗口小部件,也可以使用广播接收器向托管活动发送信号以更新窗口小部件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM