Деятельность уничтожается после startActivityForIntent - PullRequest
0 голосов
/ 16 мая 2018

В последнее время я борюсь со своим приложением.
У меня есть действие 'MyActivity' с просмотром текста, содержащим текущую дату

Вариант использования прост:
- пользователь нажимает кнопку, чтобы запустить намерение камеры из MyActivity
- пользователь делает снимок
- MyActivity возобновляется, и текстовое представление по-прежнему содержит текущую дату

. Это прекрасно работает на большинстве устройств.Однако на устройствах с нехваткой памяти активность разрушается во время намерения камеры, и когда я возвращаюсь к MyActivity, текстовое представление больше не содержит дату.

Используя отладчик и точки останова, я мог видеть следующее:

05-16 12:41:35.364 3614-3614/com.example.test D/TAG: onDestroy: MyActivity@10140ca0
05-16 12:41:35.414 3614-3614/com.example.test D/TAG: onCreate: MyActivity@2e507264
05-16 12:41:35.804 3614-3614/com.example.test D/TAG: setting textview date : "16 05 2018"
05-16 12:41:37.206 3614-3614/com.example.test D/TAG: onDestroy: MyActivity@2e507264
05-16 12:41:37.236 3614-3614/com.example.test D/TAG: onCreate: MyActivity@253f67dc
05-16 12:41:37.706 3614-3614/com.example.test D/TAG: setting textview date : "16 05 2018"

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

Если кто-нибудь может угадать решение этой раздражающей, я был бы благодарен.

Редактировать

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("TAG", "onCreate: " + this);
    // inflate the layout 
    loadContent(R.layout.activity_invoice_more_options);

    dateView = findViewById(R.id.date_view);        
    buttonView = findViewById(R.id.button_view);

    dateView.setText(Tools.getFormattedDate(Calendar.getInstance().getTime(), "dd MM yyyy"));

    // set button click listener
    buttonView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent chooseImageIntent = getPickImageIntent(getApplicationContext(), getString(R.string.choose_action));
            startActivityForResult(chooseImageIntent, FILE_PICKER_RESULT);
        }
    });
}



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (data == null) return;
    switch (requestCode) {
        case FILE_PICKER_RESULT:
            if (resultCode != RESULT_OK) return;
            // retrieve file content and name
            final String fileName = Tools.getFileName(this, data);
            String fileContent = Tools.getFileContent(this, data);
            break;
    }
}
...