簡體   English   中英

如何從Android中的活動啟動Java線程

[英]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..

但是您必須牢記一些事情。

  1. 保持Non-UI工作遠離UI線程是一種很好的編程習慣。

    從HoneyComb它是一個規則。

  2. 通過將類擴展為Thread class or implementing Runnable interface. ,可以使用java的方式Thread class or implementing Runnable interface.

  3. 在android中創建單獨的線程后,您將從UI線程中刪除,因此要返回以在ui線程上顯示非ui工作,您需要使用Handler或嘗試使用AsyncTask (它會同步UI和Android中的非UI)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM