Widget 如何在android小部件中使用新线程
//结果: I/System.out:onReceive:android.appwidget.action.appwidget\u更新 I/System.out:处理程序运行成功 ///////处理程序正在运行,但“textview”将不可见。哪种方法合适?.thx获取帮助Widget 如何在android小部件中使用新线程,widget,handler,Widget,Handler,//结果: I/System.out:onReceive:android.appwidget.action.appwidget\u更新 I/System.out:处理程序运行成功 ///////处理程序正在运行,但“textview”将不可见。哪种方法合适?.thx获取帮助 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
@Override
public void onUpdate(Context context, AppWidgetManager
appWidgetManager, int[] appWidgetIds) {
onUpdate(context, appWidgetManager, appWidgetIds, null);
}
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, final Intent receiveIntent) {
RemoteViews rw = new RemoteViews(context.getPackageName(), R.layout.calendar_widget);
packageManager=context.getPackageManager();
//code for other jobs
if (receiveIntent != null){
manualUpdate = receiveIntent.getBooleanExtra("manual", false);
final RemoteViews[] remoteViews= new RemoteViews[]{rw};
if(manualUpdate){
remoteViews[0].setViewVisibility(R.id.update_ready_text,View.VISIBLE);//work
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
remoteViews[0].setViewVisibility(R.id.update_ready_text,View.INVISIBLE);//not work!!
System.out.println("handler ran is succes");
}
});
}
//code for other jobs...
appWidgetManager.updateAppWidget(appWidgetId, rw);
}
***我找到了解决办法。我忘记了处理程序中的更新小部件。它有效——:))
if(manualUpdate){
remoteViews[0].setViewVisibility(R.id.update_ready_text,View.VISIBLE);//work
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
remoteViews[0].setViewVisibility(R.id.update_ready_text,View.INVISIBLE);//
appWidgetManager.updateAppWidget(appWidgetIds,rw);
}
});
}