gpt4 book ai didi

android - 异步任务与内容提供者。访问SQLite数据库要用什么?

转载 作者:太空狗 更新时间:2023-10-29 14:03:42 24 4
gpt4 key购买 nike

我的 Android 应用程序中有一个简单的数据库,其中包含有关国家/地区的信息。我必须做的一件事是用国家名称填充下拉菜单。

所以,我写了一些像这样的简单代码:

public class FetchCountryAsync extends AsyncTask<String,Void,Cursor> {
private Context con;
private CountryConsumer consumer;
//----------------------------------------------------------------------------------------------
public FetchCountryAsync(Context con, CountryConsumer consumer) {
this.con = con;
this.consumer = consumer;
}
//----------------------------------------------------------------------------------------------
@Override
protected Cursor doInBackground(String... params) {
CountryDatabaseHelper helper = new CountryDatabaseHelper(con);
Cursor countries = helper.getCountries();
return countries;
}
//----------------------------------------------------------------------------------------------
@Override
public void onPostExecute(Cursor countries){
if(!isCancelled()){
consumer.setCountries( countries );
}
}
//----------------------------------------------------------------------------------------------
}

为了让它工作,我做了很多笨拙的事情——一个AsyncTask,一个interface

我的问题是,编写我自己的 ContentProvider 并完全避免 AsyncTask 的麻烦是否是更好的方法?

最佳答案

这取决于您和您的应用计划。

编写一个 ContentProvider 可能需要更多的工作,但它会提供一个更彻底、更灵活的数据访问点,您可以在您的应用程序中重复使用这些数据。例如,可通过 Uri 访问的查询、插入、更新、删除方法。

ContentProvider 允许您集中和抽象化对您应用中的数据库/其他数据的访问。这样一来,如果数据库结构发生变化,则只有一个访问点可以更新以管理信息。根据我的经验,它只会让事情变得更干净。此外,如果您决定将信息共享给其他应用程序,ContentProvider 实现将使这一切变得简单。

如果它只是应用程序中单个 Activity 的一次性信息检索任务,那么您所拥有的似乎还不错。如果您将在整个应用程序中使用它并在数据库中更新/插入数据或执行更复杂的查询,那么制作 ContentProvider 可能值得花费额外的时间/复杂性。

关于这个主题还有另一个很好的讨论here .

关于android - 异步任务与内容提供者。访问SQLite数据库要用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com