我已经实现了从ViewGroup扩展的自定义View组件。我已经覆盖了onTouchEvent
方法来侦听MotionEvent事件。我基本上要做的是,如果用户用手指(MotionEvent.ACTION_UP
)触发并释放我的自定义视图,则包含我的视图的活动将完成。我的自定义视图包含对活动的引用。
到目前为止,我唯一的问题是方向更改,具体情况如下:
MotionEvent.ACTION_UP
,这是由方向更改和新活动的重新创建引起的(方向更改将重新创建轮换活动)MotionEvent.ACTION_UP
时调用了activity.finish(),所以会抛出IllegalStateException,因为旧的活动已经被销毁,而且我再次调用了finish()(处理MotionEvent时)。知道如何处理这个问题。我曾尝试使用onDetachFromWindow
,但这似乎是为了迟到。是否有我可以使用的另一种方法/回调。我想为我的视图创建一个小型库,因此我不想使用Activity.onDestroy()
,因为我想避免调用我的视图方法,以通知活动已被破坏。
从API级别17开始,有一个方法Activity.isDestroyed()
。这将是解决我的问题的解决方案,但我必须支持旧版本(回到Android 8)。 Activity.isFinishing()
可以工作,但我希望在活动被销毁时涵盖更一般的情况(因为我的库的用户可以实现自己的ACTION_UP回调,他可以调用Activity.onBackPressed()
而不是调用Activity.finished()
。有什么建议吗?
答案 0 :(得分:-1)
<activity android:name=".MyActivity"
android:configChanges="orientation"/>
这告诉Android您将自己处理轮换更改并且不会破坏您的活动。如果你真的需要在触摸时处理旋转,我没有答案:(