当我按下按钮连接到树莓派时,应用程序崩溃了。它打印"检查库存"在TextView中,但是在pi之后立即崩溃并结束程序,所以我认为问题只与AsyncTask有关,但我不确定。
这是我的代码:
public class MainActivity extends AppCompatActivity {
TextView results;
public String response;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
results = findViewById(R.id.countTextView);
Button thingBtn = findViewById(R.id.thingBtn);
thingBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
results.setText("Checking Inventory");
new ConnectTask().execute();
}
});
}
public String Authentication = "we gucci";
public class ConnectTask extends AsyncTask<String, Void, String>{
@Override
protected void onPreExecute() {
Log.d(TAG, "AsyncTask starting");
super.onPreExecute();
}
@Override
protected String doInBackground(String... message) {
try {
Log.d(TAG, "Attempting to Connect to Socket");
InetAddress serverAddress = InetAddress.getByName("192.168.1.11"); //must change later!!!
Socket house = new Socket(serverAddress, 5060);
Log.d(TAG, "Connected to Socket on (" + serverAddress + ", " + house.getPort());
BufferedOutputStream bos =new BufferedOutputStream(house.getOutputStream());
bos.write(Authentication.getBytes("UTF-8"));
bos.flush();
BufferedReader serverResponse = new BufferedReader(new InputStreamReader(house.getInputStream()));
response = serverResponse.readLine();
Log.d(TAG, "Server response: " + response);
house.close();
Log.d(TAG, "socket closed");
}catch (IOException e) {
System.exit(1);
}
return response;
}
@Override
protected void onPostExecute(String response){
Log.d(TAG, response);
results.setText(response);
}
}
}
可能是什么原因以及如何解决这个问题?