mam natknąć wymogu, ale nie jestem w stanie uzyskać prawidłowy sposób realizacji i stąd potrzebują twojej pomocy.Android App, aktywność państwa (bieganie, bieganie, nie planie/tło)
Co chcę zrobić? - Chcę, aby wykonać działanie w zależności od zgłoszenia uzyskać w następujący sposób:
- Gdy aplikacja jest otwarta, a na pierwszym planie tj widoczny dla użytkownika i dostaję powiadomienie po prostu pokazać się okienko do rozpoczęcia mojej działalności B
- Kiedy Aplikacja jest zamknięty tzn ani w tle, ani w planie i dostaję powiadomienie będę pierwszym uruchomieniu mojej aplikacji, a następnie rozpocząć działalność B
- Gdy aplikacja jest uruchomiona, ale w tle czyli w Niedawnych ale nie jest widoczna dla użytkownika, a następnie chcę zacząć moja aktywność B bez ponownego uruchamiania aplikacji. Ponadto w tym przypadku, gdy użytkownik naciśnie ponownie na Aktywność B, powinien zobaczyć ekran, który przerwali, przed wysłaniem go do tła.
Co mam zrobić? Osiągnąłem punkt # 1 i # 2. Chcę osiągnąć punkt # 3. Próbowałem poniżej
public static boolean isApplicationBroughtToBackground(final Activity activity) {
ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(1);
// Check the top Activity against the list of Activities contained in the Application's package.
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
try {
PackageInfo pi = activity.getPackageManager().getPackageInfo(activity.getPackageName(), PackageManager.GET_ACTIVITIES);
for (ActivityInfo activityInfo : pi.activities) {
if(topActivity.getClassName().equals(activityInfo.name)) {
return false;
}
}
} catch(PackageManager.NameNotFoundException e) {
return false; // Never happens.
}
}
return true;
}
Jednak ta zwraca wartość true w obu przypadkach punkt # 2 i # 3, więc nie jestem w stanie odróżnić tylko # 3.
także Próbowałem poniżej w każdej działalności mam,
@Override
protected void onPause() {
super.onPause();
saveIsPausedInPref(true);
}
@Override
protected void onResume() {
super.onResume();
saveIsPausedInPref(false);
}
Ale to też nie daje pożądanego rezultatu coz jeśli aplikacja jest wysyłana do tła, naciskając przycisk HOME moje preferencje będą miały isPaused = true, a jeśli użytkownik usunie aplikację z najnowszej wersji, pozostanie ona prawdziwa i ponownie nie będę w stanie odróżnić punktu 2 i 3 po nadejściu powiadomienia.
Przeprosiny dla całej historii, ale mam nadzieję, że jestem w stanie wyjaśnić moje wymagania.
Z góry dziękuję. :)
Edit:
<activity
android:name=".HomeActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ChatProfileActivity"
android:screenOrientation="portrait" >
</activity>
Tak jak w stanie zrozumieć, trzeba przejść do aplikacji, która była na pierwszym planie, gdy użytkownik nacisnął przycisk 'back' o Działalności 3? –
Tak, może to być możliwe. Idealnie byłoby, gdyby potrzebowałem przypomnieć sobie moją aplikację z tła i rozpocząć na niej moją działalność B. –
pokaż swój plik manifestu, chcę zobaczyć deklaracje aktywności A i B. –