Android在横向完成后调用onCreate()

时间:2013-02-22 17:00:18

标签: android landscape oncreate portrait

我有一个活动,它在onCreate方法中启动Vibrator系统服务,然后当用户按下按钮取消振动器,然后调用finish()关闭活动。

此活动通过AlarmManager启动,因此当它关闭时,它会将用户返回到他们当前打开的任何应用程序(不一定是我的)。

我遇到的问题是,如果我的活动处于横向模式,并且当活动关闭时用户被带到不支持横向的屏幕(例如主屏幕),我的应用程序将切换为纵向在实际关闭屏幕之前调用onCreate()。因此导致此问题的步骤如下......

  • 以纵向模式播放活动
  • onCreate方法被调用,启动振动器
  • 用户将手机旋转至横向模式
  • 再次调用
  • onCreate,但由于onSaveInstanceState不为null,我可以跳过再次启动振动器
  • 用户按下按钮关闭屏幕
  • 我叫vibrator.cancel()
  • 我叫完()
  • 由于屏幕会将用户带回不支持横向模式的屏幕,因此我的活动会调用onCreate()
  • savedInstanceState等于null,因此振动器再次启动
  • 我的应用程序已关闭,振动器仍在运行

目前我能想到的唯一解决方法就是让我的活动只支持肖像模式,但如果可以,我想避免这样做。有没有人知道在调用finish()后我可以阻止onCreate()被调用的方式?

1 个答案:

答案 0 :(得分:0)

为什么不叫方法

onPause()onStop()并在此方法中调用vibrator.cancel()

当你的应用程序不再可见时,

onStop()总会被调用。

查看this流程图