我有一个静态函数,每当我的后台服务获得新位置时就会调用它。在这个函数中,我想获取传入的坐标并将它们保存在我的数据库中。我可以通过“null”作为上下文来创建数据库助手的实例,还是有更好的方法来做到这一点。谢谢。
public static void locationHasChanged() {
final wd_DatabaseHelper helper = new wd_DatabaseHelper(null, "myDB.db", null, 1);
}
可能不是。通常,您的数据库助手会扩展SQLiteOpenHelper
并且上下文将用于调用openOrCreateDatabase()
或getDatabasePath()
. 如果没有看到 wd_DatabaseHelper 的代码,我不能肯定地说,但是拥有空上下文绝不是一个好主意。自己看看... SQLiteOpenHelper 的来源
由于 android Service 是一个上下文,因此您可以将“服务的 this”传递给您的方法
public class MyLocationHelper {
public static void locationHasChanged(Context context) {
final wd_DatabaseHelper helper = new wd_DatabaseHelper(context, "myDB.db", null, 1);
....
}
}
public class MyService extends Service {
private void onLocationHasChanged()
{
MyLocationHelper.locationHasChanged(this);
}
}