我正在尝试用数据库中的数据替换内存中的数据,这将是 REST API 中使用的数据。 API 是运行在 Android 盒子上的服务。为了使用 SQLiteOpenHelper,我必须将 Context 传递给扩展它的类。不幸的是,处理 REST API 的线程没有实例化一个可以向其传递 Context 的类,而是按如下方式配置 API:
public static void createServer(){
new Thread(new Runnable() {
@Override
public void run() {
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = new ResourceConfig(ThingResource.class);
config.register(GsonMessageBodyHandler.class);
config.register(AndroidFriendlyFeature.class);
JettyHttpContainerFactory.createServer(baseUri, config);
}
}).start();
}
这是需要 Context 供我使用的类:
public class DbHelper extends SQLiteOpenHelper {
private final String DB_NAME = DatabaseContract.DATABASE_NAME;
private SQLiteDatabase db;
public DbHelper(Context context) {
super(context, DatabaseContract.DATABASE_NAME, null, DatabaseContract.DATABASE_VERSION);
}
//rest of class handles db methods
}
这里是调用 createServer()
的地方:
public class RoomStatus extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
JerseyBootstrap.createServer();
//rest of method/class set up main screen
}
}
如何将 Context 传递给 REST 服务,以便我可以使用 DbHelper 或使用其他方法从 SQLite 数据库获取数据?
最佳答案
你为什么不试试这个:
public static void createServer(Context context){
new Thread(new Runnable() {
@Override
public void run() {
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = new ResourceConfig(ThingResource.class);
config.register(GsonMessageBodyHandler.class);
config.register(AndroidFriendlyFeature.class);
JettyHttpContainerFactory.createServer(baseUri, config);
}
}).start();
}
这样调用它:
public class RoomStatus extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
JerseyBootstrap.createServer(this);
//rest of method/class set up main screen
}
}
关于java - 需要在 Jersey REST 服务中使用 SQLiteOpenHelper 但我无法传递所需的 Android 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790147/