Java Android-threadid=11:线程以未捕获异常退出
我正在开发一个应用程序,使用可控震源和闪光灯模拟电击枪。 这是我的密码:Java Android-threadid=11:线程以未捕获异常退出,java,android,multithreading,Java,Android,Multithreading,我正在开发一个应用程序,使用可控震源和闪光灯模拟电击枪。 这是我的密码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFra
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
Button btn = (Button) findViewById(R.id.button1);
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
var=false;
Electric();
break;
case MotionEvent.ACTION_UP:
var=true;
Electric();
break;
}
return false;
}
});
}
Camera cam;
public void Electric(){
Thread hola = new Thread(){
public void run(){
while (!var){
Vibrator Vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {50,100,50,200};
Vib.vibrate(pattern, 0);
try {
TimeUnit.MILLISECONDS.sleep(50);
} catch (InterruptedException e) {
//Handle exception
}
Parameters params = cam.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(params);
try {
TimeUnit.MILLISECONDS.sleep(100);
} catch (InterruptedException e) {
//Handle exception
}
Parameters paramsOff = cam.getParameters();
paramsOff.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(paramsOff);
try {
TimeUnit.MILLISECONDS.sleep(50);
} catch (InterruptedException e) {
//Handle exception
}
cam.setParameters(params);
try {
TimeUnit.MILLISECONDS.sleep(200);
} catch (InterruptedException e) {
//Handle exception
}
}
}
};
if(!var){
cam = Camera.open();
cam.startPreview();
hola.start();
}
else{
Toast.makeText(getApplicationContext(), "var true", 1000).show();
Vibrator Vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Vib.cancel();
cam.stopPreview();
cam.release();
try{
hola.interrupt();
}
catch(Exception e){
}
}
}
此代码工作正常,但有时会崩溃,并在logCat中显示:
08-14 15:23:15.647: W/dalvikvm(26293): threadid=11: thread exiting with uncaught exception (group=0x41b73d40)
08-14 15:23:15.648: E/AndroidRuntime(26293): FATAL EXCEPTION: Thread-3983
08-14 15:23:15.648: E/AndroidRuntime(26293): Process: com.polito.electricweapon, PID: 26293
08-14 15:23:15.648: E/AndroidRuntime(26293): java.lang.RuntimeException: Method called after release()
08-14 15:23:15.648: E/AndroidRuntime(26293): at android.hardware.Camera.native_getParameters(Native Method)
08-14 15:23:15.648: E/AndroidRuntime(26293): at android.hardware.Camera.getParameters(Camera.java:1706)
08-14 15:23:15.648: E/AndroidRuntime(26293): at com.polito.electricweapon.MainActivity$2.run(MainActivity.java:82)
我不明白为什么会发生这种情况,因为有时它有效,但有时无效。
我希望有人能帮我解决这个问题。
谢谢。可能有用,请看这个重复的问题。->我还没有找到解决问题的办法,希望有人能帮我