Onshake方法:活动应该只开始一次

时间:2012-11-05 12:30:38

标签: java android android-activity android-sensors

我正在用onShake方法开始活动。每次摇动,活动开始但我希望活动只在我第一次摇动时开始......我在这里看到了类似的问题:{{3但是..但是从它那里得不到多少......下面是我的代码

public class ShakeListenerTestActivity extends Activity
{
  private ShakeListener mShaker;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);              

    final Vibrator vibe = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);

    mShaker = new ShakeListener(this);
    mShaker.setOnShakeListener(new ShakeListener.OnShakeListener () {
      public void onShake()
      {
   vibe.vibrate(100);

        new AlertDialog.Builder(ShakeListenerTestActivity.this)
          .setPositiveButton(android.R.string.ok, null)
          .setMessage("Do stuff here!!")
          .show();
 }
    });

  @Override
  public void onResume()
  {
    mShaker.resume();
    super.onResume();
  }
  @Override
  public void onPause()
  {
    mShaker.pause();
    super.onPause();

  }  
}

在我的shakelistener类中,我在pause()方法中使用了unregisterListener。

 public void pause() {
        if (mSensorMgr != null) {

          mSensorMgr.unregisterListener(this);
          mSensorMgr = null;
        }
      }

我在这里缺少的任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

为什么不在你完成它应该做的事情时摆脱mShaker?构建AlertDialog后,只需致电mShaker...whatever destroys it或至少mShaker.pause。如果这不是答案,我会误解你的问题。