背景:
我在我的 Android (Java) 项目中使用 Room 持久性库来支持数据的本地缓存。Room 在查询或保存数据时在专用线程上运行。
问题:
如果在 Room 管理的这些线程之一中抛出异常,那么整个应用程序就会崩溃。这可能发生在数据不一致的情况下,例如数据与当前模式不匹配。这是非常成问题的。我宁愿自己处理此类异常并擦除本地数据库中的所有数据 - 这比让用户使用完全损坏且无法修复的应用程序要好。
示例异常:
2020-01-22 12:45:08.252 9159-11043/com.xyz E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_1
Process: com.xyz, PID: 9159
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:92)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "primary" (class com.xyz.model.remotedatasource.sampleApi.entities.ProfileImage), not marked as ignorable (2 known properties: "isPrimary", "url"])
at [Source: (byte[])":)
... -1, column: 402] (through reference chain: com.xyz.model.remotedatasource.sampleApi.entities.Candidate["profileImages"]->java.util.ArrayList[0]->com.xyz.model.remotedatasource.sampleApi.entities.ProfileImage["primary"])
at com.xyz.model.localdatasource.Converters.deserialize(Converters.java:113)
at com.xyz.model.localdatasource.Converters.toCandidate(Converters.java:73)
at com.xyz.model.localdatasource.LocalDao_Impl$4.call(LocalDao_Impl.java:270)
at com.xyz.model.localdatasource.LocalDao_Impl$4.call(LocalDao_Impl.java:217)
at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:90) …Run Code Online (Sandbox Code Playgroud) 来自JQuery参考@ http://api.jquery.com/animate/:
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle' }, 5000, function() {
// Animation complete.
});
Run Code Online (Sandbox Code Playgroud)
看起来我们只能修改真正的CSS属性,但是我希望我也能为JQuery对象属性设置动画.例如,我想为进度条的'value'属性设置动画:
http://jqueryui.com/demos/progressbar/#option-value
//setter
$('.selector').progressbar('option', 'value', 37);
Run Code Online (Sandbox Code Playgroud)
我找不到一种方法来为进度条的这个"值"属性设置动画,有没有办法这样做?
感谢帮助..
根据定义,$ args变量应包含传递给脚本函数的所有参数.但是,如果我在我的函数中构造一个管道,$ args变量的计算结果为null.谁知道为什么?
看这个例子:
function test { 1..3 | % { echo "args inside pipeline: $args" } ; echo "args outside pipeline: $args" }
Run Code Online (Sandbox Code Playgroud)
传递参数"hello"时,这是输出:
PS> test hello
args inside pipeline:
args inside pipeline:
args inside pipeline:
args outside pipeline: hello
Run Code Online (Sandbox Code Playgroud)
这有什么特别的原因吗?我知道如何解决这个问题,但是我想知道那里的anonye是否可以解释这个原因.
封装对象和管理其生命周期的最佳方法是什么?示例:我有一个类A,它包含一个B类型的对象,并且完全负责它.
解决方案1,克隆b对象以确保只有A能够清理它.
class A
{
B *b;
public:
A(B &b)
{
this->b = b.clone();
}
~A()
{
delete b; // safe
}
};
Run Code Online (Sandbox Code Playgroud)
解决方案2,直接使用传递的对象,我们冒险潜在的双重免费在这里.
class A
{
B *b;
public:
A(B *b)
{
this->b = b;
}
~A()
{
delete b; // unsafe
}
};
Run Code Online (Sandbox Code Playgroud)
在我的实际案例中,解决方案#2最适合.但是我想知道这是否被认为是错误的代码,因为有人可能不知道A的行为,即使它已被记录.我可以想到这些场景:
B *myB = new B();
A *myA = new A(myB);
delete myB; // myA contains a wild pointer now
Run Code Online (Sandbox Code Playgroud)
要么, …