gpt4 book ai didi

android - 从我的 Activity 中隐藏 DataBaseHelper 和 DAO

转载 作者:行者123 更新时间:2023-11-29 22:02:55 24 4
gpt4 key购买 nike

我想在我的 Activity 中对 Order 对象调用 CRUD 操作。我想知道以下“服务”类的实现是否是执行此操作的好方法?我不希望在我的 Activity 代码中引用 DatabaseHelper 或 DAO 对象,因为我认为这是不可取的。这是我的服务类

public class OrderService 
{
private static OrderService instance;
private static Dao<Order, Integer> orderDAO;


static public void init(Context ctx) {
if (null == instance) {
instance = new OrderService(ctx);
}
}

public static OrderService getInstance() {
return instance;
}

private OrderService(Context ctx) {
DatabaseHelper helper = DatabaseHelper.getInstance(ctx);
helper.getWritableDatabase();
orderDAO = helper.getOrderDao();
}

public Order getOrderWithId(int orderId) {
Order myOrder = null;
try {
myOrder = orderDAO.queryForId(orderId);
} catch (SQLException e) {
e.printStackTrace();
}
return myOrder;
}

public Order neworder(Order order) {
try {
orderDAO.create(order);
} catch (SQLException e) {
e.printStackTrace();
}
return order;
}

public void deleteorder(Order order) {
try {
orderDAO.delete(order);
} catch (SQLException e) {
e.printStackTrace();
}
}

public void updateorder(Order order) {
try {
orderDAO.update(order);
} catch (SQLException e) {
e.printStackTrace();
}
}

public List <Order> getordersForCategory(int orderId) {
List <Order> orders = null;
try {
orders = orderDAO.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return orders;
}
}

下面是我打算如何使用该服务

public class OrderProcessingActivity extends Activity {

int orderID;
private Order order;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.myview);
order = OrderService.getInstance().getOrderWithId(orderID);
......

这看起来是访问 SQLlite 数据库的好方法吗?我已经阅读了有关可以在 Android 中配置的“服务”实现的信息,所以我很疑惑这是我应该改用的东西吗?

最佳答案

尽管将您的数据库逻辑移至不同的类,但您是在 UI 线程中执行所有数据库操作,这并不理想。另请注意,即使您的类称为“服务”,它也不会继承自 Android 中的任何 Service 类。

另一种方法是从 AsyncTaskdoInBackground 方法执行数据库操作。 ,从该方法返回您需要的数据。然后,使用返回的数据在 onPostExecute 方法中更新您的 Activity 。

关于android - 从我的 Activity 中隐藏 DataBaseHelper 和 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11506565/

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