使用AsyncTask将数据插入数据库的正确方法是什么

Panayiotis Irakleous

我正在使用AsyncTask从服务器下载数据,并且想将数据插入数据库中。如果用户按下“主页”按钮,我必须在哪里放置插入代码,如何停止AsyncTask插入数据?

我当前正在使用,asynctask.cancel(true)但无法停止数据库插入。

public class TalkToServer extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // show progress dialog
    }

    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected String doInBackground(String... params) {
        //download data from the server
        return something;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        // dismiss dialog
    }
}
丹尼尔·纽金特

最好的选择是在中进行数据库插入操作onPostExecute()

如果AsyncTask取消,onPostExecute()则将不会调用。

AsyncTask.cancel()的文档中

调用此方法将导致doInBackground(Object [])返回后,onCancelled(Object)在UI线程上被调用。调用此方法可确保永远不会调用onPostExecute(Object)。调用此方法后,应定期从doInBackground(Object [])检查isCancelled()返回的值,以尽早完成任务。

您也可以isCancelled()doInBackground()方法中添加一个检查

    @Override
    protected String doInBackground(String... params) {
        //download data from the server

        if (isCancelled()){

          //Prevent data from being inserted in the database

          try {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //Dismiss ProgressDialog
                    }
                });
            } catch (InterruptedException e) {
                e.printStackTrace();
            }


        }

    return something;
    }

    @Override
        protected void onPostExecute(String result) {
        super.onPostExecute(result);
        // dismiss dialog
        //Insert data into database
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从MySQL数据库向iOS应用获取私有数据的正确方法是什么?

在插入mysql数据库时获取最后插入ID的最可靠方法是什么

使用'和'指示数据库列名称的正确方法是什么?

将CascadeType.MERGE与Spring数据存储库一起使用的正确方法是什么?

没有JOIN,处理文档数据库中数据的正确方法是什么?

在Android中将巨大的JSON数据插入SQLite数据库的方法是什么

使用nodejs和MySQL从数据库检索数据的正确方法是什么?

从输入中获取datetime-local值并将其插入数据库的正确方法是什么?

印度正确的tz数据库时区是什么?

获取数据库实例的正确语法是什么?

使用.net Core在数据库上修复数据的正确方法是什么?

与服务器和数据库通信时,在Android中使用rxkotlin或rxjava的正确方法是什么?

将数据库上下文注入到Hangfire重复作业中的正确方法是什么?

在反应中从数据库获取数据的正确方法是什么?

PDO:将数据插入数据库后获取结果的最佳方法是什么

数据库中正确的垃圾收集机制是什么?

从分离的实体更新数据库的正确方法是什么?

有什么方法可以通过循环将数据插入数据库

将表单数据放入数组,将其传递给构造函数然后插入数据库的最佳方法是什么?

还原mongodump数据库备份,正确的流程是什么?

将S3对象上传到数据库的正确过程是什么?

在mySQL中使用PDO/PHP将数据插入到预设的数据库和表中的正确方法

在关系mysql数据库的多个表中执行多个插入查询的正确方法是什么?

使用 django-rest-framework 在数据库中保存 200 个对象的正确方法是什么?

将数据插入数据库的正确方法是什么?

使用 Docker 共享数据库的好方法是什么?

将熊猫数据框插入具有相同列的数据库的快速方法是什么?

此数据库的正确 JPA 实体映射是什么?

从 Laravel 中的数据库检索数据的正确方法是什么?