2

我有一个 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();
}
4

0 回答 0