0
我正在開發一款PC和移動設備與服務器通話的軟件。當我運行從JAVA桌面應用程序的代碼,它給了我以下錯誤 android.os.NetworkOnMainThreadException
android.os.NetworkOnMainThreadException如何修改它在單獨線程中運行的代碼
我試圖實現我的班作爲一個線程,但我認爲我沒有得到它的權利。它仍然給我錯誤
我會很高興任何支持。
類ServerAccessMobile是做所有的網絡,有兩個方法,一個方法從服務器獲取數據,一個用於服務器
上設定數據,這是我想從任何活動執行它/服務
ServerAccessMobile serverAccessMobile = new ServerAccessMobile();
ArrayList <String> dataFromServer = **serverAccessMobile.getDataFromServer()**;
ArrayList <String> dataToSend = .....
**serverAccessMobile.setDataOServer(dataToSend)**;
這是類ServerAccessMobile代碼現在
public class ServerAccessMobile {
// private variables
private ObjectOutputStream outputStream;
private ObjectInputStream inputStream;
...
// constructor
public ServerAccessMobile(String arg1)
{
...
}
**private ArrayList<String> run(ArrayList<String> messageToSendList)**
{
ArrayList <String> receivedMessageList = new ArrayList <String>();
try // connect to server, get streams, process connection
{
connectToServer(); // create a Socket to make connection
getStreams(); // get the input and output streams
sendData(messageToSendList);
receivedMessageList = processConnection();
}
catch (EOFException eofException)
{
System.out.println("\n terminated connection");
}
catch (IOException ioException)
{
ioException.printStackTrace();
}
finally
{
closeConnection(); // close connection
}
return receivedMessageList;
}
public ArrayList <String > getDataFromServer(){
ArrayList<String> commandMessage = new ArrayList<String>();
commandMessage.add("GETDATA");
ArrayList<String> receivedMessageList = new ArrayList<String>();
// start server communication
receivedMessageList = **run(commandMessage);**
}
public void setDataOnServer(ArrayList <String> messageToSendList){
// start server communication
**run(messageToSendList);**
}
}
我的問題,
run()方法中的代碼應該在單獨的線程中運行,而不是在ui線程中運行 我該如何實現它的正確性?
感謝ü