當我運行應用程序時,由於內存問題,活動被終止。當應用程序在後臺死亡時onActivityResult()
我在我的活動中調用startActivityForResult()方法來啓動相機。當調用活動在後臺被殺時,它顯示出不尋常的行爲。在進入onRestoreInstance()後,有意圖返回onActivityResult()並返回結果。但在其他情況下,在進入onRestoreInstance()後,它不會進入onActivityResult()。
請問任何人請解釋爲什麼會發生這種行爲。
當我運行應用程序時,由於內存問題,活動被終止。當應用程序在後臺死亡時onActivityResult()
我在我的活動中調用startActivityForResult()方法來啓動相機。當調用活動在後臺被殺時,它顯示出不尋常的行爲。在進入onRestoreInstance()後,有意圖返回onActivityResult()並返回結果。但在其他情況下,在進入onRestoreInstance()後,它不會進入onActivityResult()。
請問任何人請解釋爲什麼會發生這種行爲。
您可以使用此代碼運行新的活動
Intent i = new Intent(this, DatabaseEditor.class);
//You may pass value on another activity
i.putExtra("xCoordinate", String.valueOf(o));
i.putExtra("yCoordinate", String.valueOf(p));
i.putExtra("scale", scaleTest);
startActivity(i);
然後覆蓋onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
// Write your code on result ok return
}
if (resultCode == RESULT_CANCELED) {
// Write your code on no result return
}
}
}
在新的活動,你可以使用此代碼
Bundle b = getIntent().getExtras();
if (b != null) {
editTextX.setText(String.valueOf(b.getString("xCoordinate")));
editTextY.setText(String.valueOf(b.getString("yCoordinate")));
editTextScale.setText(Float.toString(b.getFloat("scale")));
}
讓你傳遞的值如果你想回到以前的活動,只需調用finish();
//if you want to pass a value from this activity to you mainActivity use this
Intent returnIntent = new Intent(
"com.example.activity.MainActivity");
returnIntent.putExtra("id", streetID.intValue());
setResult(RESULT_OK, returnIntent);
finish();
由於您設置了使用的setResult(RESULT_OK,returnIntent);那麼你的代碼爲
if (resultCode == RESULT_OK) {
// Write your code on result ok return
}
得到執行..乾杯! :D
我打電話打算打開相機捕捉視頻。 –
取決於您傳遞的結果....確保您在第二個intent終止之前傳遞一個值setResult(RESULT_OK,returnIntent); – dicenice
這種情況是,調用者活動中沒有調用activityOnResult。 –
打印堆棧跟蹤,以便其他人可以瞭解您確切的問題。 – Maulik