在我的Android apk中,ANSYNC TASK方法无效

时间:2017-08-16 08:40:21

标签: android

在我的Android apk中,我使用的是异步任务方法。 它在过去很多年里运作良好,但现在却产生了问题。

doinbackground() postExecute()方法无法正常工作(不会调用它们) ,只有preExecute()方法正常工作。 doinbackground() postExecute()方法无法正常工作(不会调用它们) ,只有preExecute()方法正常工作。

class MyAsyncTask extends AsyncTask<Void, ConversationModel, Void> {
@Override
protected Void doInBackground(Void... params) {
    // TODO Auto-generated method stub

    runOnUiThread(new Runnable() {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        heading.setText("myheading");
    }
    });


    try {

    Thread.sleep(2000);

    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    for (ConversationModel model : dataList) {

    if (flagStop)
        break;

    publishProgress(model);

    long_time = Long.parseLong(model.sound_time) * 1000 + 500;

    try {

        Thread.sleep(long_time);
        Thread.sleep(long_extraTime);
        long_extraTime = 0;
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    i++;
    Log.d("i", i + " -----------------");

    }

    return null;
}

protected void onProgressUpdate(ConversationModel... model) {

    if (i % 2 == 0) {

    View v = View.inflate(Conversation1.this, arrInt_resource[0], null);
    v.setAnimation(null);

    TextView txtV_spn = (TextView) v.findViewById(R.id.textView_spn);
    TextView txtV_eng = (TextView) v.findViewById(R.id.textView_eng);
    ImageView img_sound = (ImageView) v.findViewById(R.id.imgsound_conv_spn2eng);
    RelativeLayout speak_layout = (RelativeLayout) v.findViewById(R.id.speaking_layout);
    heading.setText(dataList.get(0).heading);
    if (flag != 1) {
        txtV_spn.setText(model[0].eng_txt);
        txtV_eng.setText(model[0].spn_txt);


}

@Override
protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);

    if (i >= dataList.size()) {
    Log.d("i", i + " ------------------");
    makingcontinueImageView();
    }
}
}

1 个答案:

答案 0 :(得分:0)

使用这个

更改asynctask的.execute()方法
asynctask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);