Sposoby przeniesienia aplikacji na Androida w tle na pierwszy plan
Oto scenariusz:
AndroidManifest.xml definiuje pojedyncze działanie za pomocąandroid:launchMode="singleTask"
. (Oznacza to, że w ciągu całego cyklu życia aplikacji powinna istnieć pojedyncza czynność, prawda?)
PodczasActivity.onCreate()
, odbiornik programowy jest tworzony programowo i nasłuchuje przychodzących wiadomości SMS. Odbiornik pozostaje aktywny nawet poActivity.onPause()
przez projekt.
Gdy użytkownik skończy pracę z aplikacją, naciska przycisk Home urządzenia, który wywołujeActivity.onPause()
a aplikacja zniknie. Urządzenie wyświetli ekran główny systemu Android.
Po otrzymaniu wiadomości SMS odbiorcy programu odbierają SMS-a i próbują wyświetlić aktywność za pośrednictwem:
Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
Jednak aktywność NIE jest pokazywana użytkownikowi.
a) Dlaczego?b) Jakie są możliwe sposoby przeniesienia Aktywności na pierwszy plan?