美文网首页
比较 BasicSample 和 BasicRxJavaSamp

比较 BasicSample 和 BasicRxJavaSamp

作者: insomniatt | 来源:发表于2017-07-03 11:16 被阅读131次

1.表格

实现方式 BasicSample BasicSample PersistenceContentProviderSample
对应某个表的增删改查 Dao @Dao 使用注解的方式实现 CRUD(接口类似 retrofit) ProductDao UserDao CheeseDao
对应某个表的字段实体 Entity @Entity(tableName = "${tbName}") ProductEntity UserEntity CheeseEntity
绑定数据库和表 Database @Database(entities = {${*Entity.class}}, version = 1) ~ extends RoomDatabase AppDatabase UsersDatabase SampleDatabase
对数据库初始化,绑定关系 ViewModel extends ViewModel(AndroidViewModel) ProductListViewModel UserViewModel
得到 ViewModel 的实例 Provider.Factory~extends ViewModelProvider.NewInstanceFactory implements ViewModelProvider.Factory ProductViewModel.Factory ViewModelFactory
ContentProvider extends ContentProvider SampleContentProvider
主 View Activity extends LifecycleActivity MainActivity UserActivity
Injection provideViewModelFactory Injection
RxJava 使用mDisposable对数据库进行操作 UserActivity
绑定数据 DataBinding 在 xml 使用<data>标签绑定 model comment_item.xml

view 中获取数据

final ProductListViewModel viewModel =
               ViewModelProviders.of(this).get(ProductListViewModel.class);

       viewModel.getProducts().observe(this, new Observer<List<ProductEntity>>() {
            @Override
            public void onChanged(@Nullable List<ProductEntity> myProducts) {
                if (myProducts != null) {
                    mBinding.setIsLoading(false);
                    mProductAdapter.setProductList(myProducts);
                } else {
                    mBinding.setIsLoading(true);
                }
            }
        });
//BasicRxJavaSample:
//得到 ViewModelFactory
public static ViewModelFactory provideViewModelFactory(Context context) {
        UserDataSource dataSource = provideUserDataSource(context);
        return new ViewModelFactory(dataSource);
}

//得到 factory 实例
mViewModelFactory = Injection.provideViewModelFactory(this);

//使用ViewModelProviders获取 viewModel 实例
mViewModel = ViewModelProviders.of(this, mViewModelFactory).get(UserViewModel.class);

//使用 RxJava 读取数据库
  mDisposable.add(mViewModel.getUserName()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<String>() {
          @Override
          public void accept(String userName) throws Exception {
            mUserName.setText(userName);
          }
        }, new Consumer<Throwable>() {
          @Override
          public void accept(Throwable throwable) throws Exception {
            Log.e(TAG, "Unable to update username", throwable);
          }
        }));

相关文章

  • 比较 BasicSample 和 BasicRxJavaSamp

    1.表格 view 中获取数据

  • Android Architecture Components

    1.BasicSample - Shows how to persist data using a SQLite ...

  • Android DataBinding 基本用法

    本篇文章以这个示例BasicSample来研究学习Android DataBinding的基本用法。 开始使用 首...

  • Gradle应用例子(二)

    例子5 编写一个通用的利于管理依赖库版本的脚本文件 参考项目 googlesamples的BasicSample ...

  • 横向比较和纵向比较

    昨天下午,老公载着我和女儿出去兜风。太阳普照的时候经过市体育场门口,门庭冷落,没有什么人,傍晚又经过的时候,...

  • equals()和“==”比较

    String s1 = new String("abc"); String s2 = new String("ab...

  • 比较和成功

  • 比较和批判

    问题: 为什么我离不开这个带给我痛苦的经常批判? 回答: 批判带来痛苦,但是有时候它也带来喜悦,那就是问题之所在。...

  • 攀比和比较

    最近我和室友的关系比较紧张,处于一个小动作,一句不经意的话都会让对方想入非非,并且我们之间的秘密也越来越多。 我不...

  • 比较和排序

    内置类比较 Comparable 接口 Comparable 接口的实现 通过实现 java.lang.Compa...

网友评论

      本文标题:比较 BasicSample 和 BasicRxJavaSamp

      本文链接:https://www.haomeiwen.com/subject/rilacxtx.html