所以,我正在开发一个应用程序,它有 5 个主要功能。我想为这些功能制作小部件 - 每个小部件都提供一个功能。我制作了 5 个布局、5 个提供程序属性 xml 和 5 个 AppWidgetProvider 类。在每个提供程序类中,我都实现了 onUpdate() 方法,您可以在下面的代码中看到。并且确定我已经在清单文件中注册了它们。我的问题是,当我单击其中一个小部件时,它也会调用其他小部件 onUpdate 方法,并且只有最后一个小部件启动服务。如何使 5 小部件独立?
提供者类之一:
public class myWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
String label = appWidgetManager.getAppWidgetInfo(appWidgetId).label;
Intent intent = new Intent(context, WidgetService.class);
intent.putExtra(Constants.FUNCTION, Constants.F1);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_f1);
remoteViews.setOnClickPendingIntent(R.id.widgetF1Button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
}
}
小部件服务:
public class WidgetService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Bundle bundle = intent.getExtras();
int function = bundle.getInt(Constants.FUNCTION);
switch (function) {
case Constants.F1
//function1
case Constants.F2:
//funcion2
case Constants.F3: {
//function3
case Constants.F4: {
//function4
case Constants.F5: {
//function5public class WidgetService extends Service {
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}