Стартовое намерение обезьяны в субактивности вызывает ANR - PullRequest
2 голосов
/ 01 июня 2011

У меня есть приложение для Android с кнопкой на основной активности, которая создает второй PreferenceActivity для отображения настроек.

Манифест выглядит следующим образом

<application android:name=".MyApp" 
  android:icon="@drawable/icon" 
  android:label="@string/app_name">
  <activity android:name=".MyApp"
    android:label="@string/app_name"
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name=".Settings"></activity>
</application>

Проблема возникает, когда я былиспользуя обезьяну для тестирования.Это запустит мое приложение, затем нажмите кнопку, чтобы создать PreferenceActivity.Как только PreferenceActivity будет создано, обезьяна отправит намерение запустить другой пакет.PreferenceActivity приостановит работу, а другой пакет запустится.Затем обезьяна отправляет еще одно намерение запустить мое оригинальное приложение.Я вижу, что моя PreferenceActivity входит в onResume (), а затем он останавливается, и происходит ANR.

Я вижу в своем logcat:

INFO/ActivityManager(211): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.MyApp/.MyApp } from pid 4532
# Main activity is created and runs.
# Monkey presses settings button, which sends intent to start PreferenceActivity.
INFO/ActivityManager(211): Starting: Intent { cmp=com.example.MyApp/.Settings } from pid 4519
# PreferenceActivity is created and runs.
# Monkey sends intent to start other package.  PreferenceActivity pauses.
INFO/ActivityManager(211): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.OtherApp/.OtherApp } from pid 4532
# Other app runs.
# Monkey sends intent to start MyApp again.
INFO/ActivityManager(211): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.MyApp/.MyApp } from pid 4532
# PreferenceActivity's onResume() method runs.
# Screen is blank.
ERROR/ActivityManager(211): ANR in com.example.MyApp (com.example.MyApp/.Settings)

Я удалил все в своей PreferencesActivity, поэтому все, что осталось, это

public class Settings extends PreferenceActivity 
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
    addPreferencesFromResource(R.xml.preferences);
  }
}

Я все еще получаю ANR при возобновлении PreferenceActivity.НО, если я изменю его, чтобы расширить Activity вместо PreferenceActivity и удалить предпочтения в onCreate (), я больше не получу ANR.Я также не получаю ANR, если пытаюсь запустить интенты вручную с помощью «adb shell am», поэтому моя проблема возникает только при запуске Monkey.

Любая помощь будет наиболее ценной.Спасибо.

...