onResume() работает только тогда, когда приложение запускается через значок запуска, кроме нажатия кнопки открытия при установке

Я разрабатываю приложение для Android с Min-TargetSDK=3 и TargetSDK=15. Ранее я также задавал вопрос, связанный с тем, что мое приложение не сворачивается в «Недавние приложения» при нажатии кнопки «Домой». Всякий раз, когда я запускаю свое приложение, оно запускается со страницы входа вместо отображения последнего просмотренного экрана. Но я не нашел решения до сих пор.

Каким-то образом мне удалось вывести последнюю просмотренную активность, когда пользователь переключается на другую задачу из приложения, нажав кнопку «Домой». Тем не менее приложение не сворачивается в недавние приложения.

Теперь столкнулся с другой проблемой:

Сценарий 1 – ОК:

  1. Установите мое приложение из apk-файла, скопированного на SD-карту.
  2. нажал Готово после установки.
  3. Затем откройте его, щелкнув значок запуска.

В этом сценарии, если пользователь нажимает кнопку «Домой» при использовании приложения и повторно открывает приложение с помощью значка запуска, последний просмотренный экран отображается. Но приложение нет в списке последних приложений.

Сценарий 2 — ПРОБЛЕМА:

  1. Установите мое приложение из apk-файла, скопированного на SD-карту.
  2. Откройте его, нажав кнопку «Открыть» после установки.

В этом случае, если пользователь нажимает кнопку «Домой» при использовании приложения и повторно открывает приложение с помощью значка запуска, последний просмотренный экран НЕ отображается. Вместо этого он начинается со страницы входа. Также приложение не указано в списке последних приложений. Вот мой файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.net.elderlyhealth"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.CALL_PHONE"/>

<uses-sdk android:minSdkVersion="3"
    android:targetSdkVersion="15"/> 

<application 
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".ElderlyActivity" android:alwaysRetainTaskState="true"
        android:label="@string/title_activity_elderly" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity  android:name=".ElderlyHealthAct" />


    <activity android:name=".account.LoginPage"  />
    <activity android:name=".account.SignupPage" />
    <activity  android:name=".account.RoleNavigator" />
    <activity  android:name=".account.CreateRoleActivity"  />
    <activity  android:name=".account.RoleAdmin"/>
    <receiver   android:name=".server.AlarmReceiver"></receiver>

</application>

</manifest>

person Nandhu    schedule 23.02.2013    source источник
comment
Я думаю, вы должны опубликовать свой манифест XML.   -  person dmon    schedule 23.02.2013
comment
да, я разместил свой проявленный файл в самом вопросе ..   -  person Nandhu    schedule 23.02.2013
comment
Во-первых, я не знаю, почему вы ожидаете, что он покажет последний просмотренный экран после новой установки. Во-вторых, должно быть какое-то условие, при котором срабатывает ваш экран входа в систему (например, какой-то контекст безопасности отсутствует?). Можете ли вы изучить, что может вызывать экран входа в систему, и добавить это к вопросу?   -  person hack_on    schedule 23.02.2013
comment
я понимаю, что вы говорите. но я не ожидал этого в первый раз. после того, как он установил его в первый раз, и пользователь начал использовать приложение, последующие посещения приложения после нажатия кнопки «Домой» только столкнулись с такой проблемой. Я использую sharedPrefrences для хранения пользовательских сеансов. Можете ли вы объяснить, что вы имеете в виду под проблемой контекста безопасности?   -  person Nandhu    schedule 23.02.2013
comment
@Nandhu Не беспокойтесь о SecurityContext. Я просто пытался понять, что вызывает отображение страницы входа. На данный момент я подозреваю ошибку кодирования в коде жизненного цикла активности (onCreate, onResume, onStop, onPause и т. д.), но трудно сказать без дополнительной информации.   -  person hack_on    schedule 23.02.2013
comment
спасибо за ответ hack_on!! я нашел, что моя проблема исправлена, но, к сожалению, я не могу ответить на свой вопрос на данный момент. я отправлю его через 7 часов. На самом деле это ошибка в eclipse. я упомянул здесь, чтобы решить эту проблему: code.google.com/p /android/issues/detail?id=2373#c21 спасибо, что нашли время помочь мне..   -  person Nandhu    schedule 23.02.2013


Ответы (1)


Я думаю, что это будет работать для вашего 2-го сценария. Вы можете проверить флаг FLAG_ACTIVITY_BROUGHT_TO_FRONT в onCreate() вашей первой активности, а затем закончить, если он установлен.

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
    // Here activity is brought to front, not created,
    // so finishing this will get you to the last viewed activity
finish();
return;
    }

// Regular code.
}
person Kartik Srivastava    schedule 18.04.2013
comment
Отличный Картик... Работает отлично. ты сэкономил мне много времени - person Ganesh; 03.07.2013
comment
Спасибо за твой ответ, Картик. я был занят какой-то другой работой. позвольте мне попробовать ваше решение и сообщить вам результат. - person Nandhu; 11.07.2013