Android 小部件创建时未更新?-安卓

Android 小部件创建时未更新?-安卓,android,widget,android-widget,Android,Widget,Android Widget,我有一个小部件,当点击按钮时显示天气。小部件应该在第一次创建时进行此更新,但事实并非如此。我必须手动点击更新,一旦我把它放在主屏幕上 Q.如何在创建小部件后自动更新它? 我尝试过的事情: 在小部件提供程序内部使用OneEnabled 在小部件提供程序内部使用OnReceive 我的WidgetProvider: public class Widget extends AppWidgetProvider { @Override public void onUpdate(Contex

我有一个小部件,当点击按钮时显示天气。小部件应该在第一次创建时进行此更新,但事实并非如此。我必须手动点击更新,一旦我把它放在主屏幕上

Q.如何在创建小部件后自动更新它?

我尝试过的事情:

  • 在小部件提供程序内部使用OneEnabled
  • 在小部件提供程序内部使用OnReceive
  • 我的WidgetProvider:

    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{
    //对天气进行所有更新,并在文本视图上显示
    } 
    }
    
    我是小部件编程新手,请告诉我是否可以进行任何优化!:)