ListView в виджете перестает работать через 60 секунд - PullRequest
0 голосов
/ 13 февраля 2020

У меня проблема с виджетом приложения. Виджет содержит список и кнопку обновления. 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...