如何在 Service 类上投射 LifecycleOwner?

Bad*_*Guy 6 java android android-room android-livedata

我想从服务类中选择带有 livedata 的房间数据库上的数据。观察时如何投射 LifecycleOwner?

repositoryDatabase.getTimeline().observe(this, timelineList -> {
    if (timelineList != null && timelineList.size() >= 10) {
        JSONArray arrayTimeline = new JSONArray();
        for (TimelineEntity timeline : timelineList) {
            JSONObject objectTimeline = new JSONObject();
            try {
                objectTimeline.put("doku", timeline.getIdDokumen());
                objectTimeline.put("entrydate", timeline.getEntryDate());
                objectTimeline.put("lat", timeline.getLat());
                objectTimeline.put("lng", timeline.getLng());

                arrayTimeline.put(objectTimeline);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        onUpdateLocation(arrayTimeline.toString());
    }
});
Run Code Online (Sandbox Code Playgroud)

Bir*_*ani 8

你可以这样使用LifecycleService

将此依赖项添加到您的app/build.gradle文件中:

dependencies {
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
}
Run Code Online (Sandbox Code Playgroud)

通过以下方式扩展您的服务LifecycleService

dependencies {
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
}
Run Code Online (Sandbox Code Playgroud)

之后,您将能够观察您的LiveData.


小智 6

将此依赖项添加到您的app/build.gradle文件中:

\n\n
implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如androidx.lifecycle 发布页面中提到的

\n\n
\n

版本 2.2.0 ~~ 2020 年 1 月 22 日 ~~ 自 2.1.0 以来的重要更改

\n 生命周期扩展工件弃用:随着上述 ViewModelProviders.of() 的弃用,此版本标志着生命周期扩展中最后一个 API 的弃用现在这个工件应该被认为是完全废弃的。我们强烈建议您根据需要的特定生命周期工件(例如,如果您\xe2\x80\x99使用 LifecycleService,则使用生命周期服务;如果您\xe2\x80\x99使用 ProcessLifecycleOwner,则使用生命周期进程),而不是使用生命周期扩展,因为不是生命周期扩展的未来 2.3.0 版本。

\n
\n