[英]How to start a java thread from a Activity in android
我為使用普通Java線程的套接字I / O編寫了一個網絡程序包,我想知道是否可以使用此程序包? 我沒有使用這些線程來操縱活動UI上的任何東西。
還是我必須將這些Java線程移植到Android兼容的線程? 因為我一直認為您可以使用普通的Java線程,只要它們不更改Activity的視圖即可。
您如何發布代碼示例?
現在可以正常工作,以測試消息隊列是否正常工作。 我使用2 LinkedBlockingQueue輸入和輸出。 我為什么需要使用線程的原因。 現在,我剛剛將用於封裝連接和SocketIO的類轉換為AsyncTask。 這是一個學校項目,我們需要使用Android應用程序通過wifi控制車輛。
您可以在Android上使用Java線程。 實際上,它們沒有什么不同,並且Android模型確實支持通用的Thread
類。 但是,不建議僅使用舊代碼,將一些特定於Android的組件粘貼在上面,並希望做到最好。 相反,這將是使用Service
協調與UI對齊的后台線程的好地方。 服務在沒有UI的情況下運行,但在單獨的組件中,以將它們與應用程序的其余部分邏輯上分開。
在您的網絡jar庫中,如果您使用來自java.lang
包的普通舊線程,則無需執行任何特殊操作,因為自API級別1起它已移植到Android中。
如果您使用包java.util.concurrent
類,則需要對網絡jar庫進行第二次嘗試,因為自API級別1開始,某些類未移植到Android中,因此可能不適用於所有API級別,例如java從API級別9開始引入.util.concurrent.BlockingDeque 。
軟件包java.net
存在相同的情況,例如,從API級別9開始引入了java.net.IDN 。因此最好也檢查網絡jar庫中的那些。
Threads from java works just fine with Android..
但是您必須牢記一些事情。
保持Non-UI工作遠離UI線程是一種很好的編程習慣。 但
從HoneyComb它是一個規則。
通過將類擴展為Thread class or implementing Runnable interface.
,可以使用java的方式Thread class or implementing Runnable interface.
在android中創建單獨的線程后,您將從UI線程中刪除,因此要返回以在ui線程上顯示非ui工作,您需要使用Handler
或嘗試使用AsyncTask
(它會同步UI和Android中的非UI)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.