我看到屏幕旋转后,再次创建了一个android活动。我知道如何恢复视图,但我不明白我是否可以从屏幕旋转后方法停止的位置开始。
答案 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;
}
祝你好运