Android 安卓活动&;异步SQLite通信优化

Android 安卓活动&;异步SQLite通信优化,android,sqlite,android-asynctask,Android,Sqlite,Android Asynctask,案例:为了让我的应用程序的用户即使无法访问互联网也能使用该应用程序,我将数据存储在SQLite数据库中。对于应用程序的不同部分,要获取当前用户数据,我使用单例。 是这样的, 使用前获取数据并存储: 对服务器的请求=>包含数据的包=>Singleton=>SQLite DB 为用户显示数据: SQLite DB=>Java类=>Singleton=>Activity 调用将数据存储到SQLite数据库: DatabaseConductor dbc = new DatabaseConductor(g

案例:为了让我的应用程序的用户即使无法访问互联网也能使用该应用程序,我将数据存储在SQLite数据库中。对于应用程序的不同部分,要获取当前用户数据,我使用单例。 是这样的,

使用前获取数据并存储: 对服务器的请求=>包含数据的包=>Singleton=>SQLite DB

为用户显示数据: SQLite DB=>Java类=>Singleton=>Activity

调用将数据存储到SQLite数据库:

DatabaseConductor dbc = new DatabaseConductor(getApplicationContext());
dbc.setReturnCue(MyActivity.this);
dbc.execute(DataBaseActions.STUFF_SQL_IN);
DatabaseConductor是basic,它执行以下操作:

public class DataBaseConductor extends AsyncTask<String, String, String> {
    private Context context;
    private DataBaseConductorCueing returnCue = null;

    for (String message : params) {
        Log.d("Doing in BG", message);
        switch (message) {
            case THING_TO_DO:
                methodToActiallyDoStuff();
                break;
}
现在我使用公共静态final字符串来检查需要做什么,老实说,ENUM可能会更好。我希望这段代码能够清楚地显示它是如何工作的还有其他方法可以优化此功能吗?

编辑1:整数比枚举更好


编辑2:接口的设计模式是回调接口,这样您就不必注册处理程序。

看起来像订阅
dbc.setReturnCue(MyActivity.this)

如果你不取消订阅,你会有内存泄漏

您提到了Singleton,但是在
DatabaseConductor
的代码片段实例中

异步任务在单个后台线程上串行执行(来自API 11)。所以长时间运行的工人可以阻止其他人

你多久打一次请求?你可以考虑使用服务。< /P> 公共静态最终字符串,以检查需要执行的操作

您是否只有一个活动客户端

如何解决数据同步问题


如果你真的很关心优化,不要使用。

Thanx作为链接!还有退订。诚然,在代码片段中没有单例的例子。
public interface DataBaseConductorCueing {
    void processFinish(String output);
}