帮助声明可以防止外部存储

时间:2017-11-10 21:17:22

标签: android sqlite android-recyclerview

我们想在模拟器上使用辅助EXTERNAL存储,这很有用。用户可以选择外部或内部存储。 Android build 26.0.2 是清单有权限。当这行代码包含在启动器Activity中时,存储默认为INTERNAL helper = new DBHelper(this); helper声明为static。使用该行代码的最大好处是,当应用程序停止或我们在模拟器中使用Clear All关闭应用程序时,由RecyclerAdapter支持的ArrayList中的绑定数据仍然存在。所以不使用helper声明,除非在Activity中需要时创建需要从数据库重新加载数据并填充ArrayList。这就是我们迷失的地方。我们试图在DBhelper中调用加载ArrayList的方法。以下无效代码在ListActivity中。应用程序在关闭后始终返回MainActivity。所以问题是我在哪里以及如何放置代码以从数据库重新填充ArrayList?

    }// End of onCreate Bundle

@Override
protected void onResume() {
    super.onResume();
    helper = new DBHelper(this);
    dbList = new ArrayList<>();
    dbList = helper.getDataFromDB();
}

1 个答案:

答案 0 :(得分:1)

我尝试测试这个并发现你不需要代码行  helper = new DBHelper(this);问题出在您的MainActivity中,您的代码正在跳转到DBHelper之前,在设置变量THE_PATH之前,您要定义该变量。在我的测试中,我发现你需要建立在该行程之前传递给DBHelper的变量THE_PATH的内容。在测试时我更改了config.ini以从模拟器中排除SD CARD,而Android只使用内部存储。 截至目前,我的测试仍然不允许用户选择存储类型。 如果DB超出内部存储器的存储容量,则只需将默认设置为EXTERNAL存储。如您所知,SD卡上的数据并不真实安全