我有一段代码通过简单地调用一些 URL 来设置一些网络 IP 摄像机参数。URL(为了简化)采用这种格式“http://mydomain.com:portnumber/setalarm.cgi”,我使用普通的 HttpGet / HttpResponse 机制来调用 URL 并获取结果状态(如果好,则为 200,如果不好,则为其他)。现在:由于要调用的 URL 是 8 个或更多,因此按顺序(我使用 for 循环),我想显示一个进度条(或简单的进度指示器),让用户知道正在执行不同的 URL 调用。当所有 8 次调用都完成后,我希望显示一个带有结果的新活动(OK,或 KO 与 KO 凸轮列表)。
我尝试了很多解决方案,在这个站点上找到了,但没有一个成功的(线程、进度条、对话框栏、异步任务等)。要么我得到异常,要么栏不显示,要么在流程完成之前显示新的活动。
有人可以帮忙吗?这是我现在代码的相关部分:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlayout);
// ON button
Button myButton1 = (Button) findViewById (R.id.button1);
myButton1.setOnClickListener(new OnClickListener() {
public void onClick(final View arg0) {
intGoodCamera = 0;
intBadCamera = 0;
for (int i = 0; i<intNumCam; i++) {
System.out.println (intStartingPortNb+i);
String myurl = strIPAddress + ":" + (intStartingPortNb+i) + strSuffixSetAlarmOn;
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(myurl);
HttpResponse response = null;
try {
response = httpClient.execute(httpGet, localContext);
System.out.println (response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode() == 200)
intGoodCamera++;
else {
intBadCamera++;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println ("OK: "+intGoodCamera + " KO: "+ intBadCamera);
Intent nextIntent = new Intent(MainActivity.this, Results.class);
MainActivity.this.startActivity(nextIntent);
}
});
......