用于存储到数据库中的 AsyncTask 或服务或线程

Posted

技术标签:

【中文标题】用于存储到数据库中的 AsyncTask 或服务或线程【英文标题】:AsyncTask or service or thread for storing into data base 【发布时间】:2021-04-27 13:58:40 【问题描述】:

比如说,我有 10k 数据需要存储在数据库中(我估计这最多需要一分钟),但 UI 不需要这些数据。

存储它的最佳方式是什么?使用异步任务?服务?还是线程?

如果我要使用 asyncTask / 线程,即使活动已关闭,它们是否仍会保持“活动”一分钟?

【问题讨论】:

【参考方案1】:

JobIntentService 可能是您的选择。它与活动无关,不会被活动破坏。

使用方法:

    清单,
<uses-permission android:name="android.permission.WAKE_LOCK" />

<service android:name=".YourService" android:permission="android.permission.BIND_JOB_SERVICE" />
    创建服务:
public class YourService extends JobIntentService 

    public static final int JOB_ID = 1;

    public static void enqueueWork(Context context, Intent work) 
        enqueueWork(context, YourService.class, JOB_ID, work);
    

    @Override
    protected void onHandleWork(@NonNull Intent intent) 
        // Your jobs are here
    


    在某处开始工作: YourService.enqueueWork(context, new Intent());

【讨论】:

感谢您的回复。另一个问题,即使应用程序被杀死,JobIntentService 还会运行吗?因为即使活动停止或应用程序被终止,也必须存储数据。或者服务会更适合这个吗?还是两者都没有? @JiwaChhetri,是的,JobIntentService 将在 APP 被杀死的几分钟内被杀死。你的工作需要一分钟,时间看起来就足够了。

以上是关于用于存储到数据库中的 AsyncTask 或服务或线程的主要内容,如果未能解决你的问题,请参考以下文章

无法覆盖 AsyncTask 类中的 onPostExecute() 方法或使其触发

AsyncTask 执行()或 executeOnExecutor()?

如何从服务器下载图像如果使用Asynctask存储在ArrayList中的URL?

MongoDB:数据类型插入文档查询文档

AWS Athena 可以更新或插入存储在 S3 中的数据吗?

在 AsyncTask 或 Service 上下载文件?