我已經實現了一個自ViewGroup擴展的自定義View組件。我已經覆蓋了用於偵聽MotionEvent事件的onTouchEvent
方法。我基本上會做的是,如果用戶用他的手指(MotionEvent.ACTION_UP
)創建並釋放我的自定義視圖,則包含我的視圖的活動將完成。我的自定義視圖具有對該活動的引用。如何在方向變化時處理onTouchEvent UP
到目前爲止好,我唯一的問題是方向的變化,有以下情形:
- 用戶觸摸我認爲(在我看來手指)
- 用戶旋轉設備(手指還在我的看法)
- 一個
MotionEvent.ACTION_UP
會被認可,引起取向的變化和新的活動(朝向的變化休閒會重新建立一個旋轉的活動) - 因爲我叫activity.finish()在處理一個
MotionEvent.ACTION_UP
將拋出一個IllegalStateException,因爲舊的活動已經被銷燬,而且我再次調用finish()(處理MotionEvent時)。
任何想法如何處理這個問題。我試圖使用onDetachFromWindow
,但似乎要遲到了。是否有另一種方法/回調,我可以使用。我想爲我的觀點創建一個小型圖書館,因此我不想使用Activity.onDestroy()
,因爲我想避免調用我的觀點的方法,以通知活動已被破壞。
由於API級別17有一個方法Activity.isDestroyed()
。這將是解決我的問題的解決方案,但我也必須支持舊版本(回到Android 8)。 Activity.isFinishing()
會的工作,但我想已經覆蓋活動時已被破壞(因爲我的媒體庫的用戶可以實現自己的ACTION_UP回調,在那裏他可以打電話Activity.onBackPressed()
,而不是調用Activity.finished()
的更普遍的情況。有什麼建議?