我读到在屏幕旋转后,再次创建了一个 android 活动。我了解如何恢复视图,但我不知道是否可以从屏幕旋转后停止方法的位置开始。
问问题
257 次
2 回答
0
如果在您转动屏幕时正在执行某个方法,该方法将完成其工作。
它不会被暂停或其他任何事情,因为它“不可能”这样做。
如果该特定方法对您的应用程序/活动很重要,您应该在重新创建活动时再次调用它。
于 2013-11-06T20:04:25.623 回答
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;
}
祝你好运
于 2013-11-06T20:39:17.773 回答