【发布时间】:2013-02-22 17:00:18
【问题描述】:
我有一个 Activity 在其 onCreate 方法中启动 Vibrator 系统服务,然后当用户按下按钮时它会取消振动器,然后调用 finish() 来关闭该 Activity。
此活动是通过 AlarmManager 启动的,因此当它关闭时,它会将用户返回到他们当前打开的任何应用程序(不一定是我的)。
我遇到的问题是,如果我的活动处于横向模式,并且当活动关闭时用户被带到不支持横向的屏幕(例如主屏幕),我的应用程序切换到纵向和在实际关闭我的屏幕之前调用 onCreate() 。所以导致这个问题的步骤如下...
- 活动以纵向模式启动
- onCreate 方法被调用,启动振动器
- 用户将手机旋转到横向模式
- 再次调用onCreate,但由于onSaveInstanceState不为null,我可以跳过再次启动振动器
- 用户按下按钮关闭屏幕
- 我调用 vibrator.cancel()
- 我调用finish()
- 由于屏幕将用户带回到不支持横向模式的屏幕,我的活动调用 onCreate()
- savedInstanceState 等于 null,所以振动器重新启动
- 我的应用已关闭,但振动器仍在运行
目前我能想到的唯一解决方法是让我的活动只支持纵向模式,但如果可以的话,我想避免这种情况。有谁知道在我调用finish() 后可以防止调用onCreate() 的方法吗?
【问题讨论】:
标签: android landscape oncreate portrait