android asynctask总是那么慢

时间:2011-07-14 09:18:03

标签: android performance android-asynctask

我正在使用asynctask来运行客户端协议。 asynctask工作正常,但需要(非常明显的)几秒钟才能开始运行。

我做了一些调试,调用执行的按钮会突然显示几秒钟,然后onPreExecute()触发,我运行的进程条开始。

所以我的问题很简单:Asynctask总是这么慢,或者是否有可能出现某种问题?

这是有问题的按钮(和onClickListener)。此代码可在onCreate(Bundle SavedInstanceState)中找到:

mSave = (Button)findViewById(R.id.btnSave);
mSave.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Toast.makeText(getBaseContext(),
        "marker", Toast.LENGTH_LONG).show();
    if (portrait != null && !mComments.getText().toString().equals("")) {
        for (int i = 0; i < 6; i++) {
            checked[i] = checkBoxes[i].isChecked();
            checkBoxFields[i] = checkBoxes[i].getText().toString();
        }
        new ClientProtocol().execute();
     }
    }
});

这里是onPreExecute(),虽然我很确定暂停在此之前的某个地方:

@Override
protected void onPreExecute() {
    mProgress = 0;
    mLoad.setVisibility(View.VISIBLE);
    mSave.setClickable(false);

    mFinal = "";

    mClientThoughts = mComments.getText().toString();
    mCheckBoxes = checkBoxFields;
    mChecked = checked;

    mBaos = new ByteArrayOutputStream();
    portrait.compress(Bitmap.CompressFormat.PNG, 100, mBaos);
    mClientImage = mBaos.toByteArray();
}

1 个答案:

答案 0 :(得分:1)

从您的描述看起来似乎延迟甚至在您的onPreExecute()触发之前?是否有可能延迟按钮处理(可能是处理程序?)导致此问题?