gpt4 book ai didi

java - 小部件内的 runOnUiThread

转载 作者:行者123 更新时间:2023-11-30 02:21:53 26 4
gpt4 key购买 nike

我想在我构建的应用程序小部件中发出 HTTP 请求。

这个想法是每隔几个小时,小部件就会通过发出 HTTP 请求来更新自己,并使用它的信息来更新它的 View 。

我已经尝试在 onUpdate 函数中使用 Thread,HTTP 请求工作正常,问题是我无法使用 runOnUiThread() 来更新 View ,因为我没有运行此函数的父 Activity 。

是否有另一种方法可以在 Thread 中更新小部件的 View ?

示例代码:

public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;

for (int i=0; i<N; i++) {
final int appWidgetId = appWidgetIds[i];

final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_card);

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Http.Response resp = Http.postData("http://www.example.com", null, null, null);
views.setTextViewText(R.id.textview, resp.body);
}
catch (Exception ex) {
Log.e(TAG, Log.getStackTraceString(ex));
}
}
}
}

先谢谢你。

最佳答案

I've already tried to use a Thread in onUpdate function

这不是一个好主意。您的流程可以在您的工作完成之前终止。相反,创建一个 IntentService 来执行网络 I/O 并通过 AppWidgetManager 更新应用小部件。

the problem is that I can't use runOnUiThread() to update the views, because I have no parent activity to run this function on

由于您没有任何要更新的 View ,因此您无需为此担心。您可以设置 RemoteViews 并将它们交给后台线程上的 AppWidgetManager

关于java - 小部件内的 runOnUiThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com