2015-02-18 6 views
0

Я разрабатываю приложение для запуска приложений, содержащее WebView. Когда я запускаю приложение как обычное приложение, он работает без каких-либо проблем, после вызова startActivity()/startActivityForResult() (Intent.ACTION_CALL, не возникает при использовании Intent для MediaStore.ACTION_IMAGE_CAPTURE) вызовы приложений onPause(), onStop() и начинается другая работа, после выполнения задачи возвращается к приложению. Однако, когда я устанавливаю приложение в качестве запуска, он вызывает onDestroy() сразу после onPause() и onStop(). Такое поведение нежелательно, потому что я пытаюсь сохранить вставленные данные в приложении WebView для запуска.Приложение Android Launcher продолжает уничтожаться

Есть также много ошибок в logcat сразу после onDestroy() аналогично или аналогично E/libGLESv2: HWUI Защита: неправильный вызов из контекста приложения F: ES3-glDeleteBuffers (если не использовать его в качестве запуска, такие ошибки появляются, но спорадически и в разных ситуациях).

AppManifest содержит

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <category android:name="android.intent.category.HOME" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Я также попытался с помощью SingleInstance, с этим приложением режим работает правильно после установки, но ломает его поведение после перезагрузки.

Использование minSdkVersion 19, протестировано на Android 4.4.2.

ответ

0

Итак, вот как мне удалось решить эту проблему, и на самом деле в чем была проблема. Я использовал

Settings.System.putInt(
      getContentResolver(), 
      Settings.System.USER_ROTATION, 
      // toRotate //Or a different ROTATION_ constant 
      Surface.ROTATION_270 
    ); 

для вращения экрана, потому что мне нужно было убедиться, что приложение работает в ландшафтном режиме. Дело в том, что камера поддерживает ландшафтный режим, но dialer - нет. Поэтому, когда я запускал камеру, это было без проблем, но дозвон вызывал портретное вращение, и это приводило к поведению WebView по умолчанию при повороте экрана onDestroy(), и это вызывает перезагрузку впоследствии ...

0

Пусть начать с изменения его на что-то вроде этого,

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Теперь давайте понять, что launchMode (s) являются

с помощью документации: андроида: launchMode Инструкция о том, как деятельность должна быть запущена. Существует четыре режима, которые работают вместе с флажками активности (константы FLAG_ACTIVITY_ *) в объектах Intent, чтобы определить, что должно произойти, когда действие призвано обрабатывать намерение. Это: «стандарт» «singleTop» «singleTask» «singleInstance» Режим по умолчанию «стандартный».

«singleTask»Не позволяетНесколько экземпляров Система создает активность в корне новой задачи и маршрутов намерения к нему. Однако, если экземпляр действия уже существует, система перенаправляет намерение на существующий экземпляр посредством вызова его метода onNewIntent(), а не создает новый.

"стандарт" По умолчанию. Система всегда создает новый экземпляр действия в целевой задаче и направляет на нее намерение.

«SingleTop» Если экземпляр активности уже существует в верхней части целевой задачи, система направляет намерение этого экземпляра посредством вызова его метода onNewIntent(), а не создавать новый экземпляр активности.

SingleInstance " То же, что„singleTask“, за исключением того, что система не запускать любые другие виды деятельности, в задачу держащего экземпляр. Активность всегда одним и единственным членом своей задачи.

для более подробно, обратитесь к Documentation

+0

Спасибо, это работает, но это как только как я использую '' он снова вызывает onDestroy(), onNewIntent () никогда не вызывается согласно logcat. Я просто этого не понимаю, он работает нормально при запуске активности камеры, но он прерывается при запуске действия Dial. –

Смежные вопросы