Как показать уведомление от фонового сервиса? - PullRequest
8 голосов
/ 09 октября 2011

В проекте, над которым я работаю, есть два разных приложения: одно - серверное, а другое - клиентское. Серверное приложение имеет 1 класс обслуживания, который инициирует поток сервера в функции onStartCommand(). Класс для серверного потока определяется в самом классе обслуживания. Всякий раз, когда сервер получает какие-либо данные от клиента, он сохраняет их в базе данных. Итак, проблема в том, что я хочу уведомить пользователя о том, что новые данные поступили через уведомление или тост-сообщение, если это возможно. Также скажите мне, где я должен написать код для уведомления, должен ли я писать в классе обслуживания или классе потока или firstActivity классе, из которого я запускаю службу сервера. Спасибо.

Ответы [ 2 ]

9 голосов
/ 09 октября 2011

Сначала вам нужно прочитать эту статью о том, как использовать Уведомления .

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

NotificationManager notificationManager =
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
int icon = R.drawable.notification_icon;
CharSequence notiText = "Your notification from the service";
long meow = System.currentTimeMillis();

Notification notification = new Notification(icon, notiText, meow);

Context context = getApplicationContext();
CharSequence contentTitle = "Your notification";
CharSequence contentText = "Some data has arrived!";
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

int SERVER_DATA_RECEIVED = 1;
notificationManager.notify(SERVER_DATA_RECEIVED, notification);
3 голосов
/ 09 октября 2011

Я читаю это неправильно?И ваше серверное приложение, и ваше клиентское приложение находятся на одном устройстве Android?

В любом случае, посмотрите на ApiDemos для кода для уведомлений через службу.

И поскольку вы, вероятно, будете иметь дело с удаленным сервером (а не с локальным) и всеми проблемами задержки, связанными с сетью, я думаю, вам лучше обернуть свой сервис в AsyncTask.

Также узнайте о приемниках вещания. Зарегистрированные приемники вещания могут стать отличным способом запуска служб / действий без необходимости бесконечного бесконечного опроса собственных служб.

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