Android,线程,无法注销SensorEventListener

Android,线程,无法注销SensorEventListener,第1张

Android,线程,无法注销SensorEventListener

也许是一个长镜头,但我能看到的与已完成的示例以及您的示例(没有看到其他代码)不同的唯一地方是实现SensorEventListener并将其传递给注册和注销事件,而不是自定义的SensorEventListener。

看到有人通过使用new运算符实例化侦听器和似乎对他有用的答案来尝试这种方式的堆栈溢出。

public class MySensorActivity extends Activity implements SensorEventListener {public void onCreate(Bundle bundle) {        super.onCreate(bundle);        ...        loopThread();}  private void loopThread() {        boolean found = kill;        System.out.println("Looping until Found!");        locationThread = new Thread(){     private float myacc;     @Override     @Override     public void run() {  while (found == false && !kill){          System.out.println("Another Loop!");          getMyLoc();          found = isFound(mylat,mylng,target_lat,target_lng,radius);          try {       synchronized(locationThread){    locationThread.wait(100);       }          } catch (InterruptedException e) {       // TODO Auto-generated catch block       e.printStackTrace();          }  }  mSensorManager.unregisterListener(this, mAccelerometer);  mSensorManager.unregisterListener(this, mGravitometer);  mSensorManager.unregisterListener(this);  locationThread.interrupt();     }}@Overridepublic void onPause(){        super.onPause();        mSensorManager.unregisterListener(this, mAccelerometer);        mSensorManager.unregisterListener(this, mGravitometer);        locationThread.interrupt();}@Overridepublic void onResume(){        super.onResume();        registerSensors();        mSensorManager.registerListener(this, mAccelerometer,     SensorManager.SENSOR_DELAY_NORMAL);        mSensorManager.registerListener(this, mGravitometer, SensorManager.SENSOR_DELAY_NORMAL);        if (true)     loopThread();}private void registerSensors() {        mSensorManager =     (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);        List<Sensor> mySensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);        if(mySensors.size() > 0){     mAccelerometer =     mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);     mGravitometer =     mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);     mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);     mSensorManager.registerListener(this, mGravitometer, SensorManager.SENSOR_DELAY_NORMAL);     Toast.makeText(context, "Getting your location...", Toast.LENGTH_LONG).show();        }        else{     Toast.makeText(context, "No ORIENTATION Sensor", Toast.LENGTH_LONG).show();        }} public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {     Intent i = new Intent(this, MFLMain.class);     if (locationThread != null)  if(locationThread.isAlive()){     mSensorManager.unregisterListener(this, mAccelerometer);     mSensorManager.unregisterListener(this, mGravitometer);     mSensorManager.unregisterListener(this);     locationThread.interrupt();  }     locator.stopListener();     kill = true;     System.out.println("Kill the app "+kill);     finish();     startActivity(i);     return false;        }        return super.onKeyDown(keyCode, event);}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5507111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存