我有一个 Android 应用程序,它在 android 2.x 上运行良好,但在 Ice Cream Sandwhich 上失败了。
应用程序具有 Mainactivity A,当单击“Setup”按钮时,它会使用 onStartActivityForResult() 启动 SetupActivity B。
通过 SetupActivity,用户可以启动其他活动来设置应用程序设置(网络连接设置、用户界面设置等)。SetupActivity 使用 onStartActivityForResult() 启动其中一些,并将有关更改设置的数据放入 Intent 中,该 Intent 使用 setResult(RESULT_OK,intent); 返回
当 SetupActivity 启动了另一个活动 C(即连接设置)并且 C 已返回时,MainActivity A 被再次创建无意义的数量(即 50 次)(或者它的 onCreate() 被调用了很多次)。这可能是什么原因,我应该如何继续解决这个问题?这个问题只发生在冰淇淋三明治上。
代码:
主要活动:
//OnClick listeners for all the buttons and text field in the UI
public void onClick(View view) {
//start SetupActivity
if (view == (setup_button)){
Intent intent = new Intent(getApplicationContext(), SetupActivity.class);
startActivityForResult(intent, SETUP_ACTIVITY);
}
...
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
switch(requestCode) {
case SETUP_ACTIVITY: //returned from SetupActivity
//check what settings have changed and update variables accordingly
...
}
}
设置活动:
//click handler for "Measurement setup" button
public void measSetupClicked(View v) {
Intent intent = new Intent(this, MeasurementSetupActivity.class);
startActivityForResult(intent, MEAS_SETUP);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Intent intent = new Intent();
//try-catch omited for brevity
if(data.hasExtra("MEAS_SETTINGS_CHANGED")) {
intent.putExtra("MEAS_SETUP_CHANGED"),data.getExtras().getBoolean("MEAS_SETTINGS_CHANGED"));
}
setResult(RESULT_OK,intent);
}
@Override
public void onBackPressed() {
SetupActivity.this.finish();
}
public void backButtonPressed(View v) {
SetupActivity.this.finish();
}