2011-05-28 121 views
1

我是Java新手,也是Android新手。我正在開發一款遊戲,並試圖瞭解Java和Android中事件的確切性質。我有幾個問題可以幫助我理解在我的應用程序中執行事件處理的正確方法。Java中的線程和事件處理

它是一個網絡遊戲,所以我需要檢查用戶是否進行了移動或不更新視圖。此外,如果他需要太長時間,我還需要提醒用戶採取行動。爲此,我有兩個線程 -

  • 定時器線程每10秒過期並根據需要調用updateview或提示用戶進行移動。
  • 事件線程被當用戶點擊屏幕上,使菜單等

這是正確的做法上的移動或點擊產生的?這兩個可以在任何時候被解僱。

下面是我這一看問題 -

  • 時,當另外一個是積極的一個線程獲取運行會發生什麼。
  • 如果兩個線程同時啓動,哪個線程優先。
  • 計時器線程中的事件是否排隊?
  • 如果是的話,我可以選擇隊列中的哪一個使用?
  • 我可以取消隊列中的事件嗎?對於例如如果我有2個updateview事件排隊在隊列中,我只需要調用它一次。

感謝您的任何意見。

P

回答

2

我建議在Android AsyncTask讀了。

+0

感謝您的反饋。我正在閱讀本文,並會看到如何使用它。 – user220201 2011-05-29 14:50:41

+0

謝謝AsyncTask非常好。在閱讀有關AsyncTasks的同時,我也學習了一些關於Android中的線程和UI線程的非常有用的東西。 – user220201 2011-06-01 14:42:11

1

考慮你可以使用線程實現一個定時器WiTHOUT。使用單個處理程序切換什麼,併發送postMessageDelayed(什麼0,毫秒)到處理程序說每秒。你可以設置一個計數器變量爲零,並在0處理程序中每隔一秒檢查一次該標誌,將計數器遞增1。如果值大於等於10,則發佈消息並將該變量重置爲零。如果用戶選擇一個動作,則將實例變量重置爲零。

一個耗時的動作可以在一個單獨的線程中運行,該線程可以向處理程序發送消息,可能在完成時使用1。或者您可以在單獨的asyncTask中運行耗時的操作。

JAL

+0

感謝您的反饋,我會盡力做到這一點,看看它是如何發展。 – user220201 2011-05-29 14:50:59