1

新的 Android 应用程序“开发人员”在这里,正在开发我的第一个应用程序。
正如标题所示,我正在尝试找到处理 SQLite 数据库更新并根据新行执行操作的最佳方法。

可以通过以下两种方式之一添加新行:
1)在拍摄照片时自动添加新条目的内容观察者
2)通过共享意图

只有我的应用程序可以向数据库添加条目。

现在我有一个异步任务,它每 1000 毫秒在后台循环一次,检查是否将新图像添加到数据库中,检查几个变量,如果一切顺利,它会执行 HttpPost 任务。

这按预期工作。

我来自网络开发历史,线程经验非常少。我已经阅读了有关线程信号量处理程序的文章,但我真的很难理解它们,哪些最适合我的需求,或者我目前正在做的事情是否还可以。

是否会Thread.sleep(1000);阻止设备进入深度睡眠?从而杀死电池。

我真正需要的是一些指导,可能是一些例子,我喜欢将自己视为一个快速学习者,但我缺乏线程经验使我无法真正理解什么适合我想要完成的工作。

使用以下方法将图像添加到数据库中:

public class DatabaseHelper extends SQLiteOpenHelper {

    ...

    // Adding new Image
    public void addImage(Image image) {
        Log.d(TAG, "adding image: "+image._uri);
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_URI, image._uri);  // image uri
        values.put(KEY_TRIES, image._tries); // upload tries
        values.put(KEY_UPLOADED, image._uploaded); // upload status
        values.put(KEY_DATE_ADDED, Calendar.getInstance().getTimeInMillis());
        values.put(KEY_DATE_UPLOADED, image._date_uploaded);
        // Inserting Row
        db.insert(TABLE_IMAGES, null, values);
        Log.d(TAG, "image added");
    }
}
4

1 回答 1

0

如果我理解正确,当出现与您的应用相关的新内容时,您已经有一个事件。如果连接可用,则启动上传。如果没有可用的连接,只需将其缓存在数据库中(通过使用类似的数据库结构或使用列来指示上传状态,例如缓存照片的 Unix Epoch)。

从那时起,您可能只需通过 AlarmManager 添加一个不准确的警报,该警报会尝试上传缓存的数据。

于 2013-06-16T17:11:48.427 回答