私が取り組んでいるプロジェクトでは、この種の動作が必要です。ユーザーには、サーバーへの接続と切断のオプションを提供するUIが表示されます。また、このUIを使用して、接続のステータス(接続または切断)を表示したいと思います。ユーザーが接続をクリックするたびに、アプリケーションはサーバーへの接続を処理するスレッドを開始します。ユーザーは引き続きメインのUIを見ています。彼らが接続を開始し、接続が残っている間、私は接続の状態が '接続されている'ことを望みます。いずれかの時点で接続が切断された場合は、切断された状態を表示することができます。私はこれまでに何を持っているのですか?Androidスレッドとクラスの動作の質問
私の質問は...私はスレッドの権利をしていますか?それで、電話が接続されている間、サーバー接続によって電話が壊れないようにしますか?
また、サーバーの接続状態を反映するためにメインUIを取得し、接続が壊れたときに表示するにはどうすればよいですか?
ありがとうございます!ご質問がありましたら、お知らせください。
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();
}
});
}
}
私はまったく同じことをやっていますが、明日はそれをお知らせします – Reno
何か助けに感謝します。ありがとう – prolink007