Android - Иногда начинается неправильная активность

У меня есть приложение для Android с рядом действий. Иногда запускается неправильное действие.

Обычно Подкласс приложения запускается, затем запускается действие ( StartAct ... android: name = "android.intent.action.MAIN", android: name = "android.intent.category.LAUNCHER") выполняет некоторую работу, а затем запускает InitializeActivity . Это выполняет некоторую работу, а затем запускает мое основное действие отображения ( MainAct ). Первые два действия выполняют важную инициализацию, включая установку статического флага « isInitialized » непосредственно перед запуском намерения для MainAct .

Действия запускаются с помощью startActivity () с использованием конкретное намерение (... указано действие.class) и вызов finish () после startActivity ().

Однако вот что иногда происходит, и я не знаю почему ...

Короче говоря, приложение завершается, и когда для его запуска нажимается значок, он сразу переходит к третьему ( MainAct ) действию. Это приводит к тому, что приложение обнаруживает ошибку (флаг isInitialized имеет значение false) и останавливается:

  • Запускает приложение в обычном режиме со значком:
  • ... Запускается подкласс приложения, а также запускаются некоторые рабочие потоки
  • ... StartActivity запускается, затем запускает InitializeActivity и завершает
  • ... InitializeActivity запускается, затем устанавливает isInitialized и запускается MainAct и заканчивается
  • ... MainAct запускается, работает нормально
  • ... Нажата кнопка Home и запускается Angry Birds
  • ... MainAct регистрирует onPause , затем onStop .
  • ... Рабочие потоки, принадлежащие подклассу Application, продолжают периодически делать что-то и регистрировать.
  • Через 25 минут все приложение внезапно прекращается. Это наблюдение основано на конце активности регистрации,
  • Время идет
  • нажатие кнопки «Домой»
  • Нажат ICON программы запуска для приложения
  • Вызывается подкласс приложения onCreate и возвращается
  • * Вызывается MainAct.onCreate ! (нет StartAct , нет InitializeActivity ) *

Что мне не хватает?

Примечание: из-за этой проблемы был добавлен флаг инициализации. Он устанавливается в единственном месте кода, которое запускает основное действие, и проверяется только в onCreate в основном действии.

[на запрос] Файл манифеста (слегка отредактирован). Обратите внимание, что эта служба в настоящее время не используется.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="xxx.yyy.zzz"
  android:versionCode="1" android:versionName="1.0.1">
  <application
    android:icon="@drawable/icon_nondistr"
    android:label="@string/app_name"
    android:name=".app.MainApp"
    android:debuggable="true">
    <activity
      android:label="@string/app_name"
      android:name=".app.StartAct" android:theme="@android:style/Theme.NoTitleBar">
      <intent-filter>
        <action
          android:name="android.intent.action.MAIN" />
        <category
          android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity
      android:label="Html"
      android:name=".app.HtmlDisplayAct"/>
    <activity
      android:label="Init"
      android:configChanges="orientation"
      android:name=".app.InitializeActivity" android:theme="@android:style/Theme.NoTitleBar"/>
    <activity
      android:label="MyPrefs"
      android:name=".app.PrefsAct" />
    <activity
      android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar"
      android:name=".app.MainAct">
    </activity>
    <service
      android:name=".app.svcs.DataGetterService" />
  </application>
  <uses-sdk android:minSdkVersion="4"/>
  <uses-permission
    android:name="android.permission.INTERNET" />
  <uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission
    android:name="com.android.vending.CHECK_LICENSE" />
  <uses-feature
    android:name="android.hardware.location.network"
    android:required="false" />
</manifest>
5
задан Mesocyclone 13 July 2011 в 02:42
поделиться