小编Pet*_*ter的帖子

如何从后台服务和更新UI更新ViewModel的LiveData

最近我正在探索谷歌最近推出的Android架构.从文档中我发现了这个:

public class MyViewModel extends ViewModel {
    private MutableLiveData<List<User>> users;
    public LiveData<List<User>> getUsers() {
        if (users == null) {
            users = new MutableLiveData<List<Users>>();
            loadUsers();
        }
        return users;
    }

    private void loadUsers() {
        // do async operation to fetch users
    }
}
Run Code Online (Sandbox Code Playgroud)

活动可以按如下方式访问此列表:

public class MyActivity extends AppCompatActivity {
    public void onCreate(Bundle savedInstanceState) {
        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
        model.getUsers().observe(this, users -> {
            // update UI
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在loadUsers()我正在异步获取数据的函数中,我将首先检查数据库(Room)中的数据,如果我没有得到数据,我将进行API调用以从Web服务器获取数据.然后我将获取的数据插入数据库(Room)并根据数据更新UI.建议的方法是什么?

如果我开始ServiceloadUsers()方法中调用API ,我该如何更新MutableLiveData<List<User>> users …

android background-service viewmodel android-room android-architecture-components

80
推荐指数
3
解决办法
5万
查看次数

为什么 2 for 循环的时间复杂度不是 O(n*2^n)?

该方法的时间复杂度为 O(2^n)取决于我的教授。

我觉得这个方法的时间复杂度应该是 O(n * 2^n)因为

外部 for 循环成本 O(n)

内部 for 循环成本 O(2^n)

public static int loop(int n) {
    int j = 1;
    for (int i = 0; i < n; i++) {
        for (int k = j; k > 0; k--) {
            System.out.println("Hello world");
        }
        j *= 2;
    }
    return j;
}
Run Code Online (Sandbox Code Playgroud)

java algorithm big-o time-complexity

5
推荐指数
2
解决办法
478
查看次数

我需要 AsyncTask 来查询 Android Room 数据库中的一行吗?

我正在做一个地图活动,点击标记,我会在文本视图上显示信息。该信息保存在 android 房间数据库中,因为我需要数据持久化。

我只想查询带有列名、标记标签的行

我搜索了很多查询行的方法,但没有一个是针对我的问题的。

android android-asynctask android-database android-room

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

如何删除 React Web 应用程序中左上角的计时器计数器

我的反应应用程序左上角的时间隐藏了我的应用程序中的内容,我不知道如何删除它。

在此处输入图片说明

这是我截取的Gemfile. 与时间无关。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.7.2'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.1.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 5.0'
# Turbolinks makes navigating your web application faster. Read …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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