Понимание правильной тревоги Android "поток" - PullRequest
2 голосов
/ 11 января 2010

Я работал над тренировочным приложением для Android, чтобы познакомиться с платформой. В частности, приложение, которое я пытаюсь реализовать, позволяет пользователю выбрать звуковой файл (MP3 или WAV) для воспроизведения в определенную дату и время, показывая диалог с индикатором выполнения и кнопкой OK / Cancel, позволяющей пользователю остановить воспроизведение звукового файла. Я хочу, чтобы он вел себя как приложения для обратного отсчета, которые я видел, или даже встроенное приложение будильника. Поскольку я реализую это простое (я думал!) Приложение, я пытаюсь лучше понять платформу и привести приложение в соответствие с Android.

Поскольку я писал приложение, я узнал больше о том, как все должно работать на платформе Android. И вот тут я немного запутался. Во время моих попыток заставить сигнализацию сработать и отобразить, я узнаю, что правильно сформированные приложения Android не должны показывать диалоги в результате фоновой службы или широковещательного приемника, вызываемого через службу тревоги Android. Вместо этого, я думаю, приложение должно использовать уведомление в строке состояния, чтобы предупредить пользователя. Затем у пользователя есть возможность просмотреть уведомление, чтобы увидеть, что приложение пытается сказать ему.

Мне удалось открыть диалоговое окно, которое я хотел вызвать, запустив новое действие из службы, которая была запущена службой сигнализации Android. Однако, похоже, что я нарушил правило Android, сделав это. Сначала я узнал об этом, потому что увидел в окне DDMS LogCat сообщение, в котором спрашивалось, уверен ли я, что хочу начать новый вид деятельности со Службы. Во-вторых, я читал в нескольких местах, что это было нехорошо. Одно из высказываний, которое пришло на ум, было от разработчика Google, который сказал, что он наверняка удалит приложение, которое сделало что-то подобное.

Вместо этого приложение, если я правильно понимаю, должно использовать строку состояния и уведомления, чтобы привлечь внимание пользователя и позволить им увидеть, что приложение хочет в свободное время. Это кажется противоречащим тому, что пытается сделать мое приложение. Опять же, я пытаюсь заставить его вести себя, по сути, как приложения обратного отсчета, которые я видел, или встроенное приложение будильника, которое поставляется на телефонах Android. Если мое приложение работает неправильно, работает ли приложение будильника? Очевидно, я бы сказал, что приложение будильника делает именно то, что я ожидал. И пользователь моего приложения, я думаю, ожидал, что звуковой файл будет воспроизводиться с диалоговым окном, показывающим, что воспроизведение звукового файла можно остановить без необходимости проходить через строку состояния.

Правильно ли я понимаю платформу Android? Любые мнения о том, как такое приложение может быть реализовано, не шалить, вызывая диалог, который я упомянул? Мне бы хотелось, чтобы приложение считалось хорошо сформированным приложением для Android, но мне трудно понять, насколько мое приложение так сильно отличается от других, которые я видел, или даже от встроенного будильника.

Спасибо! Джефф

1 Ответ

4 голосов
/ 11 января 2010

Пользователи обычно не ожидают появления случайных вещей на экране, особенно когда они что-то делают. В конце концов, если они играют в игру или набирают текстовое сообщение или что-то еще, всплывающее действие разрушит то, что они делают.

В некоторых приложениях предполагается, что это делается по собственному желанию. Например, входящие телефонные звонки должны появляться на экране входящих звонков, независимо от того, что делает пользователь. Можно, конечно, утверждать, что приложение в стиле будильника, как и ваше, имеет некоторые разумные права делать то же самое.

Однако, есть разработчики, которые считают, что пользователи - это куча фекалий. Такие разработчики чувствуют, что они имеют право безнаказанно извлекать информацию из фона, потому что они, как разработчики, имеют право делать то, что они хотят, и, черт побери, пользователи. Я полагаю, что именно с этой аудиторией LogCat выдает предупреждение.

Если бы я писал ваше приложение, я бы выбрал его в качестве предпочтения пользователя, хотят ли они, чтобы сигнал тревоги просто поднял Notification или фактически поднял Activity. Но независимо от того, как вы справляетесь с этим, ваша цель должна заключаться в том, чтобы делать то, что ожидают и оценят пользователи , даже если это противоречит тому, что, по мнению разработчика, должно быть сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...