2014-01-08 46 views
0

我已經實現了一個自ViewGroup擴展的自定義View組件。我已經覆蓋了用於偵聽MotionEvent事件的onTouchEvent方法。我基本上會做的是,如果用戶用他的手指(MotionEvent.ACTION_UP)創建並釋放我的自定義視圖,則包含我的視圖的活動將完成。我的自定義視圖具有對該活動的引用。如何在方向變化時處理onTouchEvent UP

到目前爲止好,我唯一的問題是方向的變化,有以下情形:

  1. 用戶觸摸我認爲(在我看來手指)
  2. 用戶旋轉設備(手指還在我的看法)
  3. 一個MotionEvent.ACTION_UP會被認可,引起取向的變化和新的活動(朝向的變化休閒會重新建立一個旋轉的活動)
  4. 因爲我叫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()的更普遍的情況。有什麼建議?

回答

-1

在你的清單,你可以設置你的活動,像這樣:

<activity android:name=".MyActivity" 
       android:configChanges="orientation"/> 

這告訴Android的你會把手旋轉而改變自己,它不會破壞你的活動。如果你真的需要處理旋轉在觸摸我。沒有答案:(