如何解决用于请求和响应的android数据库访问设计
我正在尝试向数据库生成请求,并以异常或其他数据类型的形式接收响应。
我的设置是sqlite
和Rooms
。
问题始于在主线程上执行数据库查询的Rooms
限制。
将潜在的UI工作移出主线程需要保存对源活动的引用以进行结果处理。
解决更新问题,我正在使用LiveData
,但它不适用于请求响应类型的情况。
我经常看到的一种方法是将AsyncTask
与WeakRefrence
一起使用以防止内存泄漏
例如
static class AddFolderAsyncTask extends AsyncTask<String,Void,Exception> {
private WeakReference<Activity> ref;
public AddFolderAsyncTask(Activity activity) {
ref = new WeakReference<>(activity);
}
@Override
protected Exception doInBackground(String... strings) {
// do something...
return null;
}
@Override
protected void onPostExecute(Exception e) {
Activity activity = ref.get();
if(activity != null) {
// its ok!
}
}
}
您可以对线程库和runOnUiThread
进行几乎相同的操作,但仍然需要保持安全引用。
我想知道是否有一种方法可以不使用WeakRefrence
并确保内存泄漏安全,就像一个我可能不熟悉的库(我是一个初学者),因为这是一个很常见的用例。
你们都如何向数据库发出请求并安全地收到您的回复?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。