Проект, над которым я работаю, нуждается в таком типе поведения.Пользователю будет представлен пользовательский интерфейс, который даст ему возможность подключаться и отключаться от сервера.Я также хотел бы, чтобы этот интерфейс отображал состояние соединения, «подключен или отключен».Всякий раз, когда пользователь нажимает кнопку подключения, приложение запускает поток, который обрабатывает подключение к серверу.Пользователь по-прежнему будет смотреть на основной интерфейс.Когда они запускают это соединение и пока оно остается, я бы хотел, чтобы статус соединения был «подключен».Если в какой-либо момент соединение разорвано, я бы хотел, чтобы оно отображалось как отключенное.Ниже перечислено то, что у меня есть.
Мой вопрос ... Правильно ли я делаю потоки?Чтобы телефон не прерывался подключением к серверу, когда он подключен?
Кроме того, как получить основной интерфейс, отображающий состояние подключения сервера и отображаемый при разрыве подключения?*
Заранее спасибо!Если у вас есть дополнительные вопросы, пожалуйста, дайте мне знать.
The server connection thread.
public class ConnectDevice implements Runnable {
private boolean connected;
private ObjectInputStream ois;
public void run() {
try {
InetAddress host = InetAddress.getByName("192.168.234.1");
Socket socket = new Socket(host.getHostName(), 7777);
connected = true;
while (connected) {
try {
ois = new ObjectInputStream(socket.getInputStream());
String message = (String) ois.readObject();
System.out.println("Message: " + message);
}
catch (Exception e) {
e.printStackTrace();
}
}
ois.close();
} catch (UnknownHostException e) {
e.printStackTrace();
connected = false;
} catch (IOException e) {
e.printStackTrace();
connected = false;
} /*catch (ClassNotFoundException e) {
e.printStackTrace();
connected = false;
}*/
}
}
The main UI and main class.
public class SmartApp extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.intro);
final Button firstTimeButton = (Button) findViewById(R.id.firstTimeButton);
firstTimeButton.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent userCreationIntent = new Intent(v.getContext(), UserCreation.class);
startActivityForResult(userCreationIntent, 0);
}
});
final Button connectDeviceButton = (Button) findViewById(R.id.connectDeviceButton);
connectDeviceButton.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Intent connectDeviceIntent = new Intent(v.getContext(), ConnectDevice.class);
//startActivityForResult(connectDeviceIntent, 0);
Thread cThread = new Thread(new ConnectDevice());
cThread.start();
}
});
}
}