java - Android AsyncTask 运行多次

标签 java android android-asynctask

在我的应用程序中,有一个从数据库获取输入的按钮。当我在短时间内按多次时,它崩溃. 我如何使用asynctask避免这个错误?

show.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        showinf();
    }
});

}



private String[] columns={"name","surname"};
private void showinf(){

    SQLiteDatabase db=v1.getReadableDatabase();
    Cursor c=db.query("infos",columns,null,null, null,null,null);
    Random mn2=new Random();
    int count=c.getCount();
    String mn=String.valueOf(count);
    int i1=mn2.nextInt(count+1);
    c.move(i1);

    t1.setText(c.getString(c.getColumnIndex("name")));
    t2.setText(c.getString(c.getColumnIndex("surname")));




}

谢谢...

最佳答案

您可以创建一个 boolean 标志(比方说 bDiscardButtonAction ),并将其设置为 trueonPreExecute()并将其设置为 falseonPostExecute() ,类似于:

public class FooTask extends AsyncTask<Foo, Foo, Foo>
{
    private static boolean bDiscardButtonAction = false;
    private boolean isDiscareded = false;

    @Override
    public void onPreExecute()
    {
        if(bDiscardButtonAction)
        {
            isDiscareded = true;
            return;
        }

        bDiscardButtonAction = true;
    }

    @Override
    public Foo doInBackground(Foo... params)
    {
        if(isDiscareded) return;

        // ...
    }

    @Override
    public void onPostExecute(Void result)
    {
        if(!isDiscareded) bDiscardButtonAction = false;
    }

    @Override
    public void onCancelled(Foo result)
    {
        if(!isDiscareded) bDiscardButtonAction = false;
    }
}

关于java - Android AsyncTask 运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863256/

相关文章:

java - OpenGL绘制数千个二维圆

java - 从 WAR 文件读取文件时出现问题

android - 如何实时查询firebase中的所有数据?

java - 在没有自定义样式的情况下在 Android Spinner 中的项目之间添加更多空间?

android - 如何将选定的 ListView 项添加到数组列表中

java - 如果获取数据的结果为空,如何停止AsyncTask?

java - 为什么 xpath 什么都不做?

java - string.concat() 和 + 运算符之间的区别

android - 编写 Robotium 测试以滑动打开可滑动 ListView 上的项目

java - 在 Android Studio 上使用 AsyncTask 感到困惑