亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android:調用“相機意圖”后活動被破壞

Android:調用“相機意圖”后活動被破壞

呼啦一陣風 2019-10-19 14:23:49
我正在進行兩個活動(A1,A2)。A1呼叫A2,從A2呼叫相機意圖如下launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);   startActivityForResult(launchIntent,CAMERA_REQUEST);它打開相機,我可以拍照。但是,一旦我單擊保存按鈕(s3中的刻度按鈕),就會出現問題,而不是調用我的onActivityResult,而是調用A2的onDestroy方法。我在onActivityResult fn中要做的邏輯很少。我已經在Stackoverflow上閱讀了一些關于此的文章,但我無法從中獲得有用的輸出。我在第二個Activity(A2)中有這樣的清單android:configChanges="keyboardHidden|orientation|locale"android:screenOrientation="portrait注意:在HTC One X中,我的onActivityResult fn被調用,但是在我的S3中,第二個Activity(A2)被銷毀了請對此發表您的看法。提前致謝
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

啟動相機需要大量內存。因此,在內存不足的設備上,android系統會關閉在后臺運行的Activity,因此會調用onCreate()。由于此光路,您提供的光路變為空,因此您將無法獲取已保存的圖像。


解決方法是在系統破壞您的活動時保存光路徑,然后再次恢復它。


@Override

    public void onSaveInstanceState(Bundle outState) {

        // TODO Auto-generated method stub


            outState.putString("photopath", photopath);



        super.onSaveInstanceState(outState);

    }


    @Override

    protected void onRestoreInstanceState(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        if (savedInstanceState != null) {

            if (savedInstanceState.containsKey("photopath")) {

                photopath = savedInstanceState.getString("photopath");

            }

        }


        super.onRestoreInstanceState(savedInstanceState);

    }

并且如果您正在Fragment上執行此操作。


@Override

    public void onSaveInstanceState(Bundle outState) {

        // TODO Auto-generated method stub


            outState.putString("photopath", photopath));



        super.onSaveInstanceState(outState);

    }


    @Override

    public void onViewStateRestored(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        if (savedInstanceState != null) {

            if (savedInstanceState.containsKey("photopath")) {

                photopath = savedInstanceState.getString("photopath");

            }

        }


        super.onViewStateRestored(savedInstanceState);

    }


查看完整回答
反對 回復 2019-10-19
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

相機應用程序需要大量內存,并且要釋放內存,操作系統必須殺死包括您在內的后臺應用程序。這對于所有Android應用程序都是正常的。相機應用返回時將重新創建您的活動。要保留活動狀態信息,請覆蓋onSaveInstanceState()以存儲您的數據,然后將其讀回onCreate()。


查看完整回答
反對 回復 2019-10-19
  • 3 回答
  • 0 關注
  • 526 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號