Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 领域库中缺少日志和/或异常消息_Android_Realm_Error Logging - Fatal编程技术网

Android 领域库中缺少日志和/或异常消息

Android 领域库中缺少日志和/或异常消息,android,realm,error-logging,Android,Realm,Error Logging,我想知道是否有人在他的应用程序/项目中看到过来自领域的日志行或异常消息 一些背景:我是新使用领域。因此,有时我会犯一些错误(例如,试图在事务之外更新数据模型扩展RealmObject)。当然,这些东西不会起作用,但不幸的是,我没有看到我的错误的错误或崩溃消息。在调试模式下,我可以跨过我的错误行,但什么也没有发生 我已尝试使用中描述的Crashlytics,但未提交任何报告 我正在使用: io.realm:realm gradle插件:1.1.0和应用插件:“realmandroid” 安卓工作

我想知道是否有人在他的应用程序/项目中看到过来自领域的日志行异常消息

一些背景:我是新使用领域。因此,有时我会犯一些错误(例如,试图在事务之外更新
数据模型扩展RealmObject
)。当然,这些东西不会起作用,但不幸的是,我没有看到我的错误的错误或崩溃消息。在调试模式下,我可以跨过我的错误行,但什么也没有发生

我已尝试使用中描述的Crashlytics,但未提交任何报告

我正在使用:

  • io.realm:realm gradle插件:1.1.0
    应用插件:“realmandroid”
  • 安卓工作室
  • 所有领域通信都发生在后台线程中(决不在ui-/主线程上)

感谢您的提示。

您可能遇到了1.1.1中修复的问题(使用
insertOrUpdate()
未检查事务状态),因此您应该更新到1.1.1

还值得注意的是,如果存在异常,您可能应该在后台线程上处理异常,如果存在异常,则记录异常

try {
    // do blah
} catch(Throwable e) {
    Log.e(TAG, "An error occurred", e);
    throw e;
}
事实上,在后台线程上,您可能应该这样做

Realm realm = null;
try {
    realm = Realm.getDefaultInstance();
    // do blah
} catch(Throwable e) {
    Log.e(TAG, "An error occurred", e);
    throw e;
} finally {
    if(realm != null) {
        realm.close();
    }
}

此外,如果您想监听Realm的日志(这将在2.0.0中中断),您可以提供一个
RealmLog
实现

io.realm.internal.log.RealmLog.add(new io.realm.internal.log.Logger() {
    public void v(String message) {
        Log.v("RealmLog", message);
    }

    public void v(String message, Throwable t) {
        Log.v("RealmLog", message, t);
    } 

    public void d(String message) {
        Log.d("RealmLog", message);
    }

    public void d(String message, Throwable t) {
        Log.d("RealmLog", message, t);
    } 

    public void i(String message) {
        Log.i("RealmLog", message);
    }

    public void i(String message, Throwable t) {
        Log.i("RealmLog", message, t);
    } 

    public void w(String message) {
        Log.w("RealmLog", message);
    }

    public void w(String message, Throwable t) {
        Log.w("RealmLog", message, t);
    } 

    public void e(String message) {
        Log.e("RealmLog", message);
    }

    public void e(String message, Throwable t) {
        Log.e("RealmLog", message, t);
    } 
});

您可能不理解它告诉您的一切,毕竟它是一个内部日志。

您可能遇到了1.1.1中修复的日志(使用
insertOrUpdate()
没有检查事务状态),因此您应该更新到1.1.1

还值得注意的是,如果存在异常,您可能应该在后台线程上处理异常,如果存在异常,则记录异常

try {
    // do blah
} catch(Throwable e) {
    Log.e(TAG, "An error occurred", e);
    throw e;
}
事实上,在后台线程上,您可能应该这样做

Realm realm = null;
try {
    realm = Realm.getDefaultInstance();
    // do blah
} catch(Throwable e) {
    Log.e(TAG, "An error occurred", e);
    throw e;
} finally {
    if(realm != null) {
        realm.close();
    }
}

此外,如果您想监听Realm的日志(这将在2.0.0中中断),您可以提供一个
RealmLog
实现

io.realm.internal.log.RealmLog.add(new io.realm.internal.log.Logger() {
    public void v(String message) {
        Log.v("RealmLog", message);
    }

    public void v(String message, Throwable t) {
        Log.v("RealmLog", message, t);
    } 

    public void d(String message) {
        Log.d("RealmLog", message);
    }

    public void d(String message, Throwable t) {
        Log.d("RealmLog", message, t);
    } 

    public void i(String message) {
        Log.i("RealmLog", message);
    }

    public void i(String message, Throwable t) {
        Log.i("RealmLog", message, t);
    } 

    public void w(String message) {
        Log.w("RealmLog", message);
    }

    public void w(String message, Throwable t) {
        Log.w("RealmLog", message, t);
    } 

    public void e(String message) {
        Log.e("RealmLog", message);
    }

    public void e(String message, Throwable t) {
        Log.e("RealmLog", message, t);
    } 
});

您可能不理解它告诉您的一切,毕竟它是一个内部日志。

在这种情况下,Realm将抛出一个
IllegalStateException
。听起来您的日志文件或日志设置有问题吗?请使用
1.1.1
这是
1.1.0
上的补丁版本(…另外,如果UI线程上没有域,您打算如何从域中查询?)@EpicPandaForce:我在不同的层开发我的应用程序-存储层在后台线程上执行他的工作,并通过回调通知UI。(模式名称:)我仍然不确定如何在UI线程上获取RealmObjects,除非每次需要时都使用
copyFromRealm()
:在这种情况下,PRealm将抛出
IllegalStateException
。听起来您的日志文件或日志设置有问题吗?请使用
1.1.1
这是
1.1.0
上的补丁版本(…另外,如果UI线程上没有域,您打算如何从域中查询?)@EpicPandaForce:我在不同的层开发我的应用程序-存储层在后台线程上执行他的工作,并通过回调通知UI。(模式名称:)我仍然不确定如何在UI线程上获取RealmObjects,除非每次需要时都使用
copyFromRealm()
:PThanks!用try-catch块包围我的领域通信解决了我的问题!:)现在我看到了非常好的错误消息,如
java.lang.IllegalStateException:更改领域数据只能在事务内部完成。
谢谢!用try-catch块包围我的领域通信解决了我的问题!:)现在我看到了非常好的错误消息,如
java.lang.IllegalStateException:更改领域数据只能在事务内部完成。