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