public class main extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web1("~~~"); web2("~~~");
}
private boolean is_network()
{
boolean available = false;
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isAvailable())
{
available = true;
}
return available;
}
private String downloadUrl(String strUrl) throws IOException
{
String s = null;
byte[] buffer = new byte[1000];
InputStream iStream = null;
try
{
URL url = new URL(strUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
iStream = urlConnection.getInputStream();
iStream.read(buffer);
s = new String(buffer);
}
catch(Exception e)
{
Log.d("Exception while downloading url", e.toString());
}
finally
{
iStream.close();
}
return s;
}
private class web extends AsyncTask<String, Integer, String>
{
String s = null;
@Override
protected String doInBackground(String... url)
{
try
{
s = downloadUrl(url[0]);
}
catch(Exception e)
{
Log.d("Background Task", e.toString());
}
return s;
}
@Override
protected void onPostExecute(String result)
{
~~~
}
}
void web1(String url)
{
if(is_network())
{
web WEB_web1 = new web();
WEB_web1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url);
}
}
void web2(String url)
{
if(is_network())
{
web WEB_web2 = new web();
WEB_web2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url);
}
}
}
위 코드에서는 표현되어있지 않지만 웹 1개는 1~2초 내로 연결되는 url, 다른 1개는 long-polling 방식을 사용하는 url로 오랫동안 대기해야 합니다. 이때 long-polling 사이트를 기다리면서 동시에 1번째 사이트에 접속할 수 있도록 병렬 처리를 하고 싶습니다. 어떻게 해야할까요?