Android 小部件创建时未更新?-安卓
我有一个小部件,当点击按钮时显示天气。小部件应该在第一次创建时进行此更新,但事实并非如此。我必须手动点击更新,一旦我把它放在主屏幕上 Q.如何在创建小部件后自动更新它? 我尝试过的事情:Android 小部件创建时未更新?-安卓,android,widget,android-widget,Android,Widget,Android Widget,我有一个小部件,当点击按钮时显示天气。小部件应该在第一次创建时进行此更新,但事实并非如此。我必须手动点击更新,一旦我把它放在主屏幕上 Q.如何在创建小部件后自动更新它? 我尝试过的事情: 在小部件提供程序内部使用OneEnabled 在小部件提供程序内部使用OnReceive 我的WidgetProvider: public class Widget extends AppWidgetProvider { @Override public void onUpdate(Contex
public class Widget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.rButton, buildButtonPendingIntent(context));
pushWidgetUpdate(context, views);
}
public static PendingIntent buildButtonPendingIntent(Context context) {
Intent intent = new Intent();
intent.setAction("update");
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
public static void pushWidgetUpdate(Context context, RemoteViews views) {
ComponentName myWidget = new ComponentName(context, Widget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, views);
}
}
我的广播接收器:
public class WidgetReceiver extends BroadcastReceiver {
double lat, lon;
String xtemp, xmaxtemp, xmintemp, xcity, xweather, provider, weatherpic;
Location loc;
LocationManager mlocManager;
//======================================= OnReceive Method
@Override
public void onReceive(Context context, Intent intent) {
try {
if (intent.getAction().equals("update")) {
new MyAsyncTask2().execute(context);
}
} catch (Exception e){
e.printStackTrace();
}
}
public class MyAsyncTask2 extends AsyncTask<Context, Void, String> {
//Does all the update for the weather and shows it on the textViews
}
}
公共类WidgetReceiver扩展了BroadcastReceiver{
双lat,lon;
字符串xtemp,xmaxtemp,xmintemp,xcity,xweather,provider,weatherpic;
位置loc;
地点经理;
//=====================================================================================OnReceive方法
@凌驾
公共void onReceive(上下文、意图){
试一试{
if(intent.getAction().equals(“更新”)){
新建MyAsyncTask2().execute(上下文);
}
}捕获(例外e){
e、 printStackTrace();
}
}
公共类MyAsyncTask2扩展了AsyncTask{
//对天气进行所有更新,并在文本视图上显示
}
}
我是小部件编程新手,请告诉我是否可以进行任何优化!:)