Я новичок в Android (но не в java), и меня смущают Сервисы, ViewModel, Broadcast и другие альтернативы, используемые для связи между Деятельностями. Мои потребности в общении чрезвычайно основны c.
Рассмотрим Midiscope * MainActivity . Я хочу сделать что-то подобное, но с помощью Spinner, чтобы выбрать источник в другом действии. В основном одно действие для Spinner (назовите его «SettingsActivity», но, очевидно, не может быть истинными настройками по причинам, слишком длинным для этого поля), и другое действие для пользовательского интерфейса с TextView, назовите его TextViewActivity. Я в некоторой степени могу заставить его работать, если я использую переменные stati c для доступа к TextViewActivity из настроек, так что я могу создать LoggingReceiver из настроек, но привязав его к TextViewActivity вместо настроек (this
). Очевидно, что это неправильно (ТМ), поэтому я попробовал все варианты, которые мог найти в Google, но безрезультатно. Какой самый простой способ сделать это?
Я попытался ViewModel , и пример в документации вылетает на MyViewModel model = new ViewModelProvider(this).get(MyViewModel.class);
с error: no suitable constructor found for ViewModelProvider(MyActivity)
(да, я проголосовал 1 звезду на этой странице документации). «Решение» из принятого ответа на вопрос об этом (т.е. с использованием new ViewModelProvider.NewInstanceFactory()
) завершается с java.lang.RuntimeException: Cannot create an instance of class com.example.MyViewModel
Затем я попытался IntentService, как описано в https://developer.android.com/guide/components/services но мне неясны две вещи, так что, возможно, это не правильный подход к моей проблеме:
- Что мне делать в
onHandleIntent
? Мое намерение само по себе ничего не делает, оно должно быть лишь промежуточным звеном между тем, что приходит от MIDI к моему пользовательскому интерфейсу - Как я могу получить доступ и использовать IntentService из обоих описанных выше видов деятельности? Конечно, шаблон синглтона, но как убедиться, что я не создаю те же проблемы, которые вызывает совместное использование статического c экземпляра Activity?