У меня проблема с виджетом приложения. Виджет содержит список и кнопку обновления. ListView также может обновляться автоматически, что прекрасно работает, но проблема в том, что через каждые 60 секунд после обновления виджета (независимо от того, автоматизирован ли он c или вручную) я не могу нажимать на свои элементы в списке. Я могу прокрутить, но я не могу нажать. После обновления вручную или автоматически c, нажмите на пункт, чтобы начать работать снова, но только для 60se c. Когда я не могу нажать, в logCat выскакивает это: ActivityManager: Фоновый запуск запрещен: намерение службы {flg = 0x10000000 ....... Вот мой код: publi c класс WidgetService расширяет RemoteViewsService
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
return new WidgetMailsAdapter(widgetId);
}
public static Intent getServiceIntent(Context context,int widgetId) {
Intent intent = new Intent(context, WidgetService.class);
intent.setData(Uri.parse(String.valueOf(widgetId)));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
return intent;
}
}`
WidgetProvider
...
if (inbox.getBox.size() > 0) {
Intent intent = WidgetService.getServiceIntent(context, widgetId);
...
views.setRemoteAdapter(R.id.listView, intent);
PendingIntent pendingIntent = PendingIntent.getService(context, 0,
WidgetMailsAdapter.getItemFillInIntent(null, widgetId), PendingIntent.FLAG_UPDATE_CURRENT);
views.setPendingIntentTemplate(R.id.listView, pendingIntent);
return;
}....
}`
WidgetAdapter
public static Intent getItemFillInIntent(Box box, int widgetId) {
Intent intent = new Intent(AppController.getInstance(), LaunchingService.class);
if (box!= null) {
LaunchingService.fillIntentForBox(intent, box, widgetId);
}
Log.d("Click","click");
return intent;
}
}`
LaunchingService
public class LaunchingService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
stopSelf();
return START_NOT_STICKY;
}
Bundle bundle = intent.getBundleExtra(KEY_BUNDLE_KEY);
if (bundle == null) {
stopSelf();
return START_NOT_STICKY;
}
int action = bundle.getInt(KEY_ACTION_ID);
...
stopSelf();
return START_NOT_STICKY;
}
...
public static void fillIntentForBox(Intent intent, Box box, int widgetId) {
Bundle bundle = new Bundle();
bundle.putInt(KEY_ACTION_ID, ACTION_BOX);
bundle.putString(KEY_URI, box.getUri());
bundle.putInt(KEY_WIDGET_ID, widgetId);
intent.putExtra(KEY_BUNDLE_KEY, bundle);
}