小编Sam*_*Sam的帖子

在app uninstall上删除房间数据库

我正在制作一个应用程序,我正在使用Android Room Persistence Library来处理我的数据库层.房间图书馆就像魅力一样,一切都很好.但我希望在用户卸载应用程序时删除会创建的数据库.我尝试卸载应用程序,然后再次安装,但不知何故数据库仍然存在,应用程序能够从中获取旧数据.

我想也许是因为我的应用程序数据备份在设置中设置为自动,并且android在云上备份并再次将其恢复,但关闭备份设置并没有帮助.即使这样做对你来说听起来不是一个好的解决方案.

我创建了一个非常简单的类,RoomDatabase如果有助于回答问题,则扩展和下面是代码.

我知道我可以fallbackToDestructiveMigration()在数据库构建器上使用并增加数据库版本.它将清除数据库中的数据.那不是我想要的.

@Database(entities = {UnleashedEntity.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

    private static AppDatabase INSTANCE;

    public abstract DaoContract MyDao();

    public static AppDatabase getAppDatabase(Context context) {
        if (INSTANCE == null) {
            INSTANCE =
                    Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "user-database")
                            .build();
        }
        return INSTANCE;
    }

    public static void destroyInstance() {
        INSTANCE = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑 我知道我可以使用ACTION_PACKAGE_REMOVED意图让我的应用程序知道卸载.我想知道的是,是否有配置databasebuilder可以完成工作,以及数据库在卸载后如何保留.

android android-room

11
推荐指数
2
解决办法
4399
查看次数

字符串生成器的内存分配。内存中会发生什么?StringBuilder与字符串

可能是重复的,因为对此主题有很多疑问,但我找不到我想要的东西。我知道这String是一成不变的并且StringBuilder是可变的。我了解这两个术语的本质。我想知道当创建的实例时内存中到底发生了什么StringBuilder。喜欢:

StringBuilder s = new StringBuilder();
Run Code Online (Sandbox Code Playgroud)
  1. 存储器中为s保留了多少空间?
  2. 我可以像s[0] = 'a';这样使用它,所以我们可以调用s数组吗?
  3. 如果基于s进行索引,是否表示字符在连续位置的内存中存储?
  4. 如果对3的答案为是。那么,如果我们使用s.appennd("abc");并且内存中没有足够的连续空间会发生什么"abc"呢?是否会将它s带到新的存储位置,就像string每次我们向string类型变量附加内容时发生的情况一样。

c# memory memory-management

6
推荐指数
1
解决办法
3295
查看次数

蓝牙扫描工作没有蓝牙打开Android

我正在创建一个具有蓝牙低功耗的应用程序.我发现有一件有趣的事情.我知道,API level 23除了蓝牙之外,你需要为位置提供权限才能使扫描工作.但即使从设置中关闭蓝牙,我也不知道你可以扫描设备.我关闭了蓝牙(但位置仍然打开)但我仍然可以从扫描结果中看到设备.

这是android中的一个错误,其中android内部使用蓝牙而没有用户意识到它?或者这是在我找不到的地方记录的.

android bluetooth bluetooth-lowenergy

6
推荐指数
1
解决办法
375
查看次数

Android - 等待截击响应继续

我构建了一个应用程序,它在地图中加载标记,我为 volley JSON 文件获取标记,但我首先需要加载 volley,然后继续执行代码,因为另一种方式显示latLng null错误,此参数加载速度不快,先执行另一个方法并显示为空。

我的加载标记截击代码

public  void getMarkers(){

    requestQueue = Volley.newRequestQueue(getApplicationContext());
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new Response.Listener<JSONObject>() {


        @Override
        public void onResponse(JSONObject response) {

            try {

                JSONArray saagTracker = response.getJSONArray("saagMRK");
                for (int i = 0; i < saagTracker.length(); i++) {
                    JSONObject object = saagTracker.getJSONObject(i);

                    title = object.getString(TITLE);
                    snnipet = object.getString(SNNIP);
                    latLng = new LatLng(Double.parseDouble(object.getString(LAT)), Double.parseDouble(object.getString(LNG)));
                    coor = coor + "|" + object.getString(LAT) + "," + object.getString(LNG);                        // Menambah data marker untuk di tampilkan ke …
Run Code Online (Sandbox Code Playgroud)

java android geofire

4
推荐指数
1
解决办法
5850
查看次数

与BLE的Android应用程序架构

我正在用android开发一个带有BLE API的Android应用程序.我的应用程序需要连接到BLE设备,并且只要它在范围内并打开就会保持连接状态.我需要从中读取数据,并将数据写入其中.

我试图遵循MVP架构模式,不严格,因为活动是起点.但无论如何,我想知道我应该在哪里与蓝牙进行交互?我正在寻找以下问题的答案.我搜索过StackOverflow,但找不到我要找的东西.

  1. 它应该是在与UI相关的服务中,就像googlesample ble app一样吗?但是,我认为这将破坏整个mvp架构.
  2. 它应该是一个有限的服务吗?如果不是,那么实施该服务的最佳方式是什么?在我看来,如果它不受视图限制,并且后台服务有回调在UI上显示某些内容,则可能存在未定义的行为.
  3. 谁应该发起蓝牙互动?应用程序类还是一些活动?

我正在寻找主要的架构指导,以及开发此应用程序的最佳方式.

architecture android bluetooth-lowenergy

2
推荐指数
1
解决办法
880
查看次数

DateTime.Now.Ticks在循环内重复

我正在尝试为表的主键生成一个唯一的ID,我正在使用DateTime.Now.Ticks它.这是现在我们无法使用的要求Identity.

但有时,在循环中它会在连续迭代中生成相同的ID.我的简化代码看起来像这样

    While(IncomingData.Next())
    {
     IncomingData.ID = DateTime.Now.Ticks;
     // Other Operations
      .
      .
      .
     InsertInDatabase(IncomingData);
    }
Run Code Online (Sandbox Code Playgroud)

是因为我的处理器指令/秒的速度大于Ticks测量的精度吗?我正在使用I5 2.9GHZ处理器.虽然我已经通过引入计数变量并将其添加到解决了我的问题ticks.这不是一个好方法.无论如何,有人可以为我分解它,因为a如何tick计算是否依赖于cpu周期?谢谢.

c#

0
推荐指数
1
解决办法
1412
查看次数

如何从2个不直接相关的表中选择列?

我有3张桌子A,B,C

表A.

TABLE_NAME|table_number
   soho        20  
   foho        30
   joho        40
Run Code Online (Sandbox Code Playgroud)

表B

TABLE_ID | TABLE_NAME
    1         soho
    2         foho
    3         joho
Run Code Online (Sandbox Code Playgroud)

表C.

 TABLE_ID | TABLE_VALUES
      1           xx
      1           yy
      2           hh
      3           no
      3           bb
Run Code Online (Sandbox Code Playgroud)

我想要做的是传递table_name作为:paramterfrom和得到table_values表c,如果我通过soho

TABLE_NAME| TABLE_VALUES
    SOHO           xx
    SOHO           yy
Run Code Online (Sandbox Code Playgroud)

这是我的尝试,但我得到了table_value所有表格

select a.table_name , c.table_value
from a , b , c 
where a.table_name= :myParamter
and 
b.table_id= c.table_id
Run Code Online (Sandbox Code Playgroud)

我的查询输出是这样的

ABLE_NAME| TABLE_VALUES
  SOHO           xx
  SOHO           yy
  SOHO           hh
  SOHO           no
  SOHO           bb
Run Code Online (Sandbox Code Playgroud)

sql oracle

0
推荐指数
1
解决办法
73
查看次数