내 시나리오는 다음과 같다 :있는 나는 3 초 제한 시간 HttpGet
요청 스레드 (T1)와 함께 AsyncTask
을 시작 내가 활동 A, 이 밖으로 T1 시간 후 , 나는 30 대 타임 아웃 HttpGet
요청 T2 시작 .활동을 닫고 시작할 때 내 활동의 스레드가 동기화 된 방식으로 수행되는 이유는 무엇입니까?
이제 액티비티 A를 시작하고, 의도적으로 프록시 피들러로 HttpPost
요청을 던집니다. t1 시간이 지나도 t2가 실행 된 후에는 작업을 신속하게 중지했다가 다시 시작합니다. 이상한 일이 발생합니다. 새 t1은 이전 t2가 종료 될 때까지 대기합니다. 이런 종류의 안드로이드에서 일어나는 이유
아무도 설명 할 수 왜 T1 내가 활동 A를 다시 시작한 후, 어떻게 T1이 활동 다시 시작 후 바로 시작할 수 있도록 즉시 시작하지 않는 이유는 무엇입니까?
내 테스트 코드는 두 번째 T2 내가 아주 신속하게 활동을 다시 시작하더라도 완료 후 나타나는 "httpget는 제한 시간이 3000이 시작",
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
httpget("http://www.baidu.com",3000);
httpget("http://www.baidu.com",30000);
return "test";
}
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyAsyncTask().execute("start");
}
로그 결과는 다음과 같습니다이다.