私は Android 開発者の初心者なので、2 つのスレッドをバックグラウンドで同時に実行する (またはしない) ようにしたいと考えています。 )、「メイン」で待機したい、wifiテストがタイムアウトよりも速い場合は、ユーザーを1つのページに送信し、タイムアウトが発生した場合は、ユーザーを別のページに送信します。私はすでにスレッドを作成する必要があり、1 つは timeout+progressBar を実行し、その他の接続をチェックしています。私の問題は、高速スレッドが終了するのを誰が待つかということです。 t が表示され、一部のスレッドが終了するまでアプリケーションがフリーズします… =\
何か助けて?! 私の悪い英語を申し訳ありません...
public void startProgress() {
Runnable r1 = new Runnable() {
public void run() {
for (int i = 0; i <= 10; i++) {
final int value = i;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
progress.setProgress(value);
}
});
}
setContentView(R.layout.error_menu);
//finish();
}
};
Thread th1 = new Thread(r1);
th1.start();
Runnable r2 = new Runnable() {
// Setup the run() method that is called when the background thread
// is started.
public void run() {
// Do you background thread process here...
// Checking if WIFI is ON and IF URL is Reachable
if(isOnline()){
String URL_STR="http://10.0.1.2/ShopList_for_app.php";
try
{
URL url = new URL(URL_STR);
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(7000); // This is time limit if the connection time limit
urlc.connect();
if (urlc.getResponseCode() == 200){
setContentView(R.layout.menu1);
//finish();//return;
}else{
//finish();//return;
}
}
catch (MalformedURLException e){
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
//finish();//return;
}
catch (IOException e){
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
//finish();//return;
}
}else{
//finish();//return;
}
}
};
Thread th2 = new Thread(r2);
th2.start();
Toast.makeText(getBaseContext(), "..Correu todas as Threads..", Toast.LENGTH_LONG).show();
while(true){
if(th2.isAlive()){
//Toast.makeText(getBaseContext(),"checking...", Toast.LENGTH_LONG).show();
}else{
th1.interrupt();
setContentView(R.layout.menu1);
break;
}
if(th1.isAlive()){
//Toast.makeText(getBaseContext(),"checking...", Toast.LENGTH_LONG).show();
}else{
th2.interrupt();
setContentView(R.layout.error_menu);
break;
}
}
}