【发布时间】:2016-01-24 12:34:09
【问题描述】:
我知道这是重复的,但相信我,我已经尝试了许多可用的代码,但仍然无法正常工作。
下面是我的代码
public class LookIn extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
//Initializing properties
}
public void onClick(View v) {
// Event for button click
callHelper();
}
private void callHelper()
{
List result=null;
try {
String jsonResponse=new CallmeGetHelperAsyncTask(this).execute(params).get();
result= RestUtil.getUserList(jsonResponse);
}
catch (InterruptedException e) {
Log.e("Callme", Log.getStackTraceString(e));
} catch (ExecutionException e) {
Log.e("Callme", Log.getStackTraceString(e));
}
catch(JSONException x)
{
Log.e("Callme",Log.getStackTraceString(x) );
}
}
}
下面是我的 AsyncTask 类
public class CallmeGetHelperAsyncTask extends AsyncTask<String,Void,String > {
private AppCompatActivity activity=null;
private ProgressDialog dialog=null;
public CallmeGetHelperAsyncTask(){}
public CallmeGetHelperAsyncTask(AppCompatActivity activity){
this.activity=activity;
//this.dialog= dialog;
}
@Override
protected void onPreExecute() {
if(this.dialog!=null)
{
Log.v("Callme", "Starting Dialog");
dialog = ProgressDialog.show(this.activity, "title", "message");
// this.dialog.setMessage("Looking for Helpers");
this.dialog.show();
}
else
{
dialog = ProgressDialog.show(this.activity, "title", "message");
}
}
@Override
protected void onPostExecute(String s) {
if(this.dialog!=null)
{
Log.v("Callme","Closing Dialog");
this.dialog.dismiss();
}
else
{
Log.v("Callme","Dialog is not initiated in CallmeGethelperAsyncTask");
}
}
@Override
protected String doInBackground(String... params) {
//call to webservice
}
}
我不知道上面的代码有什么问题。
我发现了另一个奇怪的东西(奇怪的可能只是因为我是新手)。我尝试从我的ActivityClass 和我的AsyncTask 打印Thread.currentThread.getId(),令人惊讶的是,两者都打印了“1”。
如果我没记错的话,那就是说两个代码都是从同一个线程运行的。
关于这一点,我读过Running multiple AsyncTasks at the same time -- not possible?,上面说之前的线程池只包含 1 个线程,但我使用的是 Android 5.1,它应该包含 5 个线程。所以我再次对此感到困惑。
请花点时间解释一下。谢谢
【问题讨论】:
标签: java android multithreading android-asynctask