用于存储到数据库中的 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?