Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在后台运行查询_Android_Sql - Fatal编程技术网

Android 如何在后台运行查询

Android 如何在后台运行查询,android,sql,Android,Sql,我列出了不同类别的产品。我得把它们分类。由于查询的原因,加载需要更多的时间。在两个活动之间,屏幕变黑。我想在后台运行查询。我如何做到这一点,以及如何在主要活动中使用其结果? 私有类InsertTask扩展了AsyncTask{ 弦猫 @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Boolean doInBackground(String... params) {

我列出了不同类别的产品。我得把它们分类。由于查询的原因,加载需要更多的时间。在两个活动之间,屏幕变黑。我想在后台运行查询。我如何做到这一点,以及如何在主要活动中使用其结果? 私有类InsertTask扩展了AsyncTask{ 弦猫

@Override
protected void onPreExecute() {
    super.onPreExecute();
}

@Override
protected Boolean doInBackground(String... params) {

 Boolean success = false;

    try {

        category(cat);
        success = true;
    } catch (Exception e) {
        if(e.getMessage()!=null)
            e.printStackTrace();
    }
    return success;
}



@Override
protected void onPostExecute(Boolean success) {
    super.onPostExecute(success);
}
private void category(String category) {

    try{
        Cursor1 = mDbHelper.fetchcategory(category);

          }catch(Exception e){
            Log.v("Excep", ""+e);
          }
    }
打电话的时候呢

    InsertTask task = new InsertTask();
    task.execute();

我已经在按钮中列出了类别。那么我如何才能获得值呢?

你应该使用它。还有一些。

我正在自己搜索,我遇到了这篇文章,它很长,但看起来非常有用,有很多代码示例。(我自己将它添加到书签中)

但某种形式的线程是关键

来自Android开发人员 (我最喜欢的代码片段)


考虑AsyncTask很好。首先,您可以在类活动中将该类声明为内部类(如果您以前没有这样做),这样您就可以访问视图类成员


您也可以通过创建线程和一个用于更新UI组件的处理程序来实现这一点。请记住,如果使用线程,出于线程安全考虑,您需要锁定/解锁数据库对象(如果任何其他线程出于任何原因访问数据库)。阅读有关dbs线程安全的更多信息。

更多信息链接已失效。已经有一段时间了,所以他们一定已经移动了文章。我找到了这篇文章。可能是相同的:AsyncTask在API级别30中不推荐使用
public void onClick(View v) { 
new Thread(new Runnable() {   
public void run() {      
//Do Work here 
           }  
    }).start();
}