在android上进行屏幕旋转后恢复方法

时间:2013-11-06 19:53:57

标签: java android android-activity rotation screen

我看到屏幕旋转后,再次创建了一个android活动。我知道如何恢复视图,但我不明白我是否可以从屏幕旋转后方法停止的位置开始。

2 个答案:

答案 0 :(得分:0)

如果您在转动屏幕时有一个方法正在执行,该方法将完成其工作。

它不会被暂停或其他任何东西,因为它“不可能”这样做。

如果该特定方法对您的应用/活动很重要,那么您应该在活动娱乐时再次调用它。

答案 1 :(得分:0)

屏幕旋转后恢复。

在最简单的形式中,您可以在onSaveInstanceState方法中保存重新创建所需内容的内容。因此,对于您的基本手电筒,您可以保存灯光的状态。对于更复杂的应用程序,您可以保存所有全局字段。 Flashlight有一个全局变量isFlashOn。

private boolean isFlashOn = false;

将手电筒的状态保存在onSaveInstanceState

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean(ISON, isFlashOn);
}

然后在oncreate方法中重新创建全局变量。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState != null) {
        isFlashOn = savedInstanceState.getBoolean(ISON);
    } 

稍后在onstart方法进程中使用isFlashOn。单击此手电筒,我就更改了isFlashOn的状态并调用了点击处理程序。

@Override
protected void onStart() {
    super.onStart(); // Always call the superclass method first

    if (camera == null) {
        camera = Camera.open();
    }
            //flip the isflashon and then click the button
    isFlashOn = !isFlashOn;
    onClick(null);
}

处理点击。

public void onClick(View arg0) {
    ImageButton i = (ImageButton) findViewById(R.id.imageButton1);

    final Parameters p = camera.getParameters();
    if (isFlashOn) {
        i.setImageResource(R.drawable.ic_launcher);
        isFlashOn = false;
        p.setFlashMode(Parameters.FLASH_MODE_OFF);
    } else {
        i.setImageResource(R.drawable.ic_launcher2);
        p.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(p);
        // Set flag to true
        camera.startPreview();
        isFlashOn = true;
    }

祝你好运