別のスレッドでいくつかの操作を行う必要があるウィジェットがあります。一部のデータを処理し、結果をウィジェットの TextView に表示するメソッドがあります。
これを実装するには、別のスレッドでメソッドを呼び出す必要があります。次に、ウィジェットに結果を表示するために、そのメソッドの最後にコードを含める必要があります( textView1.setText("my results");
.ウィジェットクラスのこのメソッドの類似物はありますか?ウィジェットでそのメソッドを使用するにはどうすればよいですか?runOnUiThread
これが私のコードです:
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
//...
//here I need to launch a method toBeLaunchedInASeparateThread in a separate thread
}
public void toBeLaunchedInASeparateThread()
{
// ... many operations
int result = 0;
//here I need to launch the following line in the UI thread to follow Android guidelines
setTextToTextView(context, "My result is " + result);
}
public static void setTextToTextView(Context context, String text)
{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_sample);
views.setTextViewText(R.id.widgetTextViewCard, text);
ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(manager.getAppWidgetIds(myWidget), views);
}
}