Можно ли получить доступ к методу в MainActivity из виджета Homescreen? - PullRequest
0 голосов
/ 07 марта 2020

Я сделал виджет домашнего экрана для своего приложения. Мне нужно, чтобы он взаимодействовал с методами в моем MainActivity.

Как бы я go об этом?

В dev do c упоминаются "виджеты управления", но не объясняется, как реализовать их. (https://developer.android.com/guide/topics/appwidgets/overview#control -widgets ).

Нужен ли мне сервис или интерфейс для связи между виджетом и MainActivity?

Что я пробовал :

Я попытался передать значение моего счетчика кликов из моего метода WidgetProvider OnReceive в мою функцию MainActivity с помощью SharedPreferences. Это работает в некоторой степени, но это должно быть взаимодействие в реальном времени в обоих направлениях, поэтому оно не подходит. Вот почему я думал с точки зрения обслуживания. Но будет ли лучший вариант?

А если я воспользуюсь услугой, будет ли это конкретная c? Как «RemoteViewsService» или «IntentService»?

Вот пример моего кода в моем WidgetProvider:

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        if (ACTION_SIMPLE_APPWIDGET.equals(intent.getAction())) {
            if (mCounter < optionsStrings.length - 1) {
                mCounter++;
            } else {
                mCounter = 0;
            }

            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);

            stringText = optionsStrings[mCounter];
            views.setTextViewText(R.id.appwidget_text, stringText);

В зависимости от значения счетчика, мне нужно вызвать различные методы в MainActivity.

1 Ответ

0 голосов
/ 08 марта 2020

MainActivity может быть destoyed , когда вы пытаетесь связаться с ним. Вам понадобится сервис, с которым могут взаимодействовать как ваш виджет, так и активность. Из того, что я понимаю, IntentService может быть тем, что вы хотите.

Когда запустится MainActivity, вам нужно будет подключиться к вашей службе и попросить ее о последней отправленной counter ценность. Тогда вы сможете делать то, что хотите.

...