Добрый день. Пытаюсь сделать своё первое системное приложение под Андроид, связанное с геолокацией и локальными уведомлениями.
Я себе представляю это так: есть основное активити MainActivity, при старте оно запускает сервис, который при смене координат отсылает их на сервер, а в ответ получает какое-то сообщение, которое выводится как локальное уведомление. Собственно, есть некоторые проблемы.
Если закрыть само приложение (через диспетчер задач), то сервис приостанавливает свою работу - при смене координат ничего не происходит.
Что нужно сделать, чтобы сервис работал всё время? Или это принципиально невозможно?
При активации локального уведомления запускается активити NotifyActivity с подробной информацией. Там нажимаю buttonDelete, активити закрывается и происходит переход в MainActivity. Но если после этого переключиться на экран ОС (используя кнопку Back) и обратно, то вместо MainActivity опять отображается это самое NotifyActivity.
Почему это происходит, как избежать?
MainActivity [Activity(Label = "LocationTest", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); var button = FindViewById
Ответ
В MainActivity добавьте этот код. Этот метод сделает то, что вам надо (но я не знаю как решить проблему с заголовком в recent activites). public override bool OnKeyDown (Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.Back) {
MoveTaskToBack(true);
return true;
}
return base.OnKeyDown (keyCode, e);
}
Вообще работа с активностями в Андроид полна подводных камней. Так что советую просто вызывать MainActivity из сервиса, а потом уже из нее вызывать NotifyActivity, соотвественно потом вы просто вызываете MainActivity (с LaunchMode = LaunchMode.SingleTop).
Комментариев нет:
Отправить комментарий