2014-01-15 2 views
3

Я заметил очень странное поведение своего устройства.Samsung Galaxy Tab 2 10.1 убивает процесс после того, как сделал снимок с камеры

создать новое намерение с действием MediaStore.ACTION_IMAGE_CAPTURE

Тогда я начать activty за результат. Но на данный момент я делаю снимок с камеры, мое приложение исчезает из процессов в перспективе DDMS. Затем через несколько секунд он снова запустится.

Что интересно - onActivityResult называется правильно и получает изображение. Но у меня есть некоторые синглтоны, которые содержат некоторые значения в своих полях. После перезапуска процесса эти одноэлементы повторно инициализируются и теряют все значения.

На других устройствах нет проблем - ни планшеты, ни телефоны.

Это известная ошибка? Ho, чтобы предотвратить перезапуск процесса на Galaxy Tab 2 10.1?

Заранее благодарен!

UPDATE: Ниже мой код, который начинает камеру Intent

private void startCameraIntent() { 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); 
    String imageFileName = JPEG_FILE_PREFIX + timeStamp + "_"; 
    File albumFile; 
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){ 
      albumFile = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), FOLDER_NAME); 
     } else { 
      albumFile = new File(Environment.getExternalStorageDirectory()+CAMERA_DIR+FOLDER_NAME); 
     } 
     if (albumFile != null){ 
      if (!albumFile.mkdirs()){ 
       if (!albumFile.exists()){ 
        showToast(getApplicationContext().getString(R.string.sFailedToCreateDirectory)); 
        return; 
       } 
      } 
     } 
     File imageFile = null; 
     try { 
      imageFile = File.createTempFile(imageFileName, JPEG_FILE_SUFFIX, albumFile); 
      mCurrentPhotoPath = imageFile.getAbsolutePath(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile)); 
     fileUri = Uri.parse(mCurrentPhotoPath); 

     startActivityForResult(cameraIntent, ACTION_CAPTURE_IMAGE); 
    } else { 
     showToast(getApplicationContext().getString(R.string.sSDNotReady)); 
    } 
} 
+1

Покажите нам свой код. –

+0

Включили ли вы «Не выполнять действия» в настройках разработчика в приложении «Настройки»? – fifarunnerr

+2

Возможно, приложение для камеры требует большого количества памяти, и система убивает приложения, среди прочих ваших. – marcinj

ответ

1

Это известная ошибка?

Это не ошибка. Если ваше приложение не находится на переднем плане, его процесс может быть прекращен в любое время.

Ho, чтобы предотвратить перезапуск процесса на Galaxy Tab 2 10.1?

Вы не можете. Ваш процесс может исчезнуть в любое время, когда он не находится на переднем плане. Например, если пользователь нажимает HOME, а затем Android завершает процесс, и после этого пользователь пытается вернуться в ваше приложение через список недавних заданий, вы увидите такое же поведение. Ваше приложение должно быть в состоянии справиться с этим.

Вы можете попробовать работать с Camera напрямую, а не запускать стороннюю деятельность, так как это будет поддерживать ваше приложение на переднем плане. Это сложнее, чем то, что вы делаете.

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