objectbox / objectbox/objectbox-java
Only re-deliver query results if results have changed
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Java
- Star
- 4.6k
- Fork
- 311
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Code example probably will be best description here.
@Entity
class KAEntry(
@Unique val key: String,
val value: String,
@Id var id: Long = 0
)
class MyApp : Application() {
private lateinit var subs1: DataSubscription
private lateinit var subs2: DataSubscription
private lateinit var boxStore: BoxStore
private set
override fun onCreate() {
super.onCreate()
boxStore = MyObjectBox.builder().name("main").androidContext(this).build()
val box = boxStore.boxFor(KAEntry::class.java)
box.removeAll() // just for reproducibility, to avoid "unique constraint violation" on second run of app
subs1 = box.query().equal(KAEntry_.key, "key1")
.build().subscribe().observer { v ->
Log.i("MyApp", "triggered for key1" )
}
subs2 = box.query().equal(KAEntry_.key, "key2")
.build().subscribe().observer { v ->
Log.i("MyApp", "triggered for key2" )
}
box.put(KAEntry("key1","some value"))
}
}
Problem is that even I've only put "key1" object and therefore only first query should trigger it's observer - both actually get triggered:
2021-04-05 14:22:53.263 25926-25962/com.acme I/MyApp: triggered for key1
2021-04-05 14:22:53.263 25926-25963/com.acme I/MyApp: triggered for key2
Either I don't understand something or this observer on query actually bugged.
I can see that triggering observer for only those objects that are changed and are in query result may have some performance impact. Though even in this case I would like to have some way of detecting that change was made to objects that query returns and not any object of this type.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Không có tệp mã nguồn, bài kiểm thử hoặc điểm vào nào được nêu tên. Hãy bắt đầu bằng cách tái hiện ví dụ đăng ký theo dõi truy vấn bằng Kotlin, sau đó lần theo phần triển khai query observer và các bài kiểm thử của nó, nếu có. Công việc được xem là hoàn tất khi các observer chỉ được thông báo khi kết quả truy vấn của chúng thay đổi, hoặc khi cách được hỗ trợ để phát hiện các thay đổi liên quan của đối tượng được ghi lại trong tài liệu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- kotlin
- Lĩnh vực
- databases, mobile-dev
- Loại issue
- Lỗi
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100