startActivityForIntent后销毁的活动

时间:2018-05-16 12:36:11

标签: android android-activity android-camera-intent

我最近在申请时苦苦挣扎 我有一项活动' MyActivity'使用包含当前日期的textview

用例很简单:
- 用户单击按钮以从MyActivity启动摄像头意图 - 用户拍照 - 恢复MyActivity并且textview仍保留当前日期

这在大多数设备上都能正常工作。但是,在内存不足的设备上,活动在摄像机意图期间被破坏,当我回到MyActivity时, textview不再保留日期。

使用调试器和断点,我可以看到以下内容:

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"

正如您所看到的那样,textview正在按预期设置,但屏幕无法显示。

如果有人能猜到解决这个烦人的问题,我会很感激。

修改

@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;
    }
}

0 个答案:

没有答案