刷新活动使用onResume() [英] Refresh Activity using onResume()
本文介绍了刷新活动使用onResume()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个手电筒活动。通常它工作正常,但如果我去其他任何活动,它停止工作!
所以我想刷新code,当我回到手电筒活动。
我认为使用刷新 onResume()
将帮助我最好的,但是怎么办呢?
公共类FlashLightActivity延伸活动{//标志检测闪光灯开启或关闭
私人布尔isLighOn = FALSE;私人相机拍照;私人按钮NEXT1,NEXT2;@覆盖
保护无效的onStop(){
super.onStop(); 如果(相机!= NULL){
camera.release();
}
}@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
NEXT1 =(按钮)findViewById(R.id.ebtn28_answer);
next1.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看视图){
意图myIntent =新意图(view.getContext(),FullScreen.class);
startActivityForResult(myIntent,0);
} }); NEXT2 =(按钮)findViewById(R.id.buttonFlashlight); 上下文的背景下=这;
软件包管理系统下午= context.getPackageManager(); //如果设备支持相机?
如果(!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)){
Log.e(犯错,设备没有摄像头!);
返回;
} 相机= Camera.open();
最终的参数P = camera.getParameters(); next2.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(查看为arg0){ 如果(isLighOn){ Log.i(信息,火炬被关闭!); p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(P);
camera.stop preVIEW();
isLighOn = FALSE; }其他{ Log.i(信息,火炬被打开!); p.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(P);
camera.start preVIEW();
isLighOn =真; } }
});}
}
解决方案
您需要覆盖的onPause和onResume。在的onPause,你需要释放相机。在onResume,您需要重新提出要求。如果您尝试持有它的时候你是不是活泼的活动相机不喜欢它。
公共无效的onPause(){
super.onPause();
如果(相机!= NULL){
camera.release();
摄像头= NULL;
}
}公共无效onResume(){
super.onResume();
//需要释放,如果我们已经有一个,否则我们不会拿相机
如果(相机!= NULL){
camera.release();
摄像头= NULL;
}
尝试{
相机= Camera.open();
}
赶上(例外五){
}}
I have a Flashlight Activity. Normally it works fine but When I go to any other activity, it stop working!
So I want to refresh the code when I back to the Flashlight Activity.
I think refreshing using onResume()
would help me best, But how to do it?
public class FlashLightActivity extends Activity {
//flag to detect flash is on or off
private boolean isLighOn = false;
private Camera camera;
private Button next1, next2;
@Override
protected void onStop() {
super.onStop();
if (camera != null) {
camera.release();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
next1 = (Button) findViewById(R.id.ebtn28_answer);
next1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), FullScreen.class);
startActivityForResult(myIntent, 0);
}
});
next2 = (Button) findViewById(R.id.buttonFlashlight);
Context context = this;
PackageManager pm = context.getPackageManager();
// if device support camera?
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Log.e("err", "Device has no camera!");
return;
}
camera = Camera.open();
final Parameters p = camera.getParameters();
next2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (isLighOn) {
Log.i("info", "torch is turn off!");
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLighOn = false;
} else {
Log.i("info", "torch is turn on!");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
isLighOn = true;
}
}
});
}
}
解决方案
You need to override onPause and onResume. In onPause, you need to release the Camera. In onResume, you need to re-request it. Camera doesn't like it if you try to hold it when you aren't the active activity.
public void onPause(){
super.onPause();
if(camera != null){
camera.release();
camera = null;
}
}
public void onResume(){
super.onResume();
//Need to release if we already have one, or we won't get the camera
if(camera != null){
camera.release();
camera = null;
}
try {
camera = Camera.open();
}
catch (Exception e){
}
}
这篇关于刷新活动使用onResume()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文