#android #intentservice
#Android #intentservice
Вопрос:
Я изучаю Android и застрял в своем сервисе.
Мое приложение подключается через сокет к моему серверу каждые X секунд, получает XML, анализирует информацию и отображает ее в текстовом представлении.
Я хотел бы знать, как я могу реализовать IntenService для этого и как передавать информацию в пользовательский интерфейс. Мне очень трудно увидеть хорошие примеры.
Я ценю любую помощь, которую вы можете мне оказать.
Спасибо!
Ответ №1:
Используйте обработчик и отправьте сообщение родительской активности из intentservice
Родительская активность :
Объявление обработчика
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle reply = msg.getData();
// do whatever with the bundle here
}
};
Вызов intentservice:
Intent intent = new Intent(this, IntentService1.class);
intent.putExtra("messenger", new Messenger(handler));
startService(intent);
Внутри IntentService:
Bundle bundle = intent.getExtras();
if (bundle != null) {
Messenger messenger = (Messenger) bundle.get("messenger");
Message msg = Message.obtain();
msg.setData(bundle); //put the data here
try {
messenger.send(msg);
} catch (RemoteException e) {
Log.i("error", "error");
}
}
Комментарии:
1. Мне нужно использовать AlarmManager для запуска службы каждые x секунд?
2. Большое вам спасибо, Фархан! Я посмотрю.
3. поздравляю. вы использовали худшее имя переменной для этого примера: «msg.setData (data);» данные??? действительно? все данные…
4. Что делать, если служба намерений запускается не из Activity, а из приложения (для обновления данных каждые X секунд)?