小编Sag*_*tel的帖子

视图必须有标签

我的库模块中有一个抽象的 BaseActivity:

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Normal method to inflate the layout
        mBinding = DataBindingUtil.setContentView(this, R.layout.base_view_stub_layout);
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        if (mBinding != null && mBinding.viewStub != null && mBinding.viewStub.getViewStub() != null) {
            mBinding.viewStub.getViewStub().setLayoutResource(getLayoutId());
        }

        if (!hasStubInflated) {
            View inflatedView = mBinding.viewStub.getViewStub().inflate();
            //Abstract method
            onViewStubInflated(inflatedView, savedInstanceState);
            //Normal method to hide progress bar
            onViewStubInflated();
        }
        initControllers();
        handleViews();
        setListeners();
        restoreValues(savedInstanceState);
    }
Run Code Online (Sandbox Code Playgroud)

AppModule 中的 MainActivity 扩展了库模块的 BaseActivity,因此获得了一个抽象方法来覆盖:

MainActivity 扩展了 BaseActivity

private ActivityMainBinding mBinding;

@Override
    public int getLayoutId() {
        return R.layout.activity_main;
    }

@Override …
Run Code Online (Sandbox Code Playgroud)

data-binding android viewstub android-databinding android-architecture-components

5
推荐指数
1
解决办法
2139
查看次数

会议室数据库迁移

如果我的数据库版本为10,我需要为Room迁移选择几种方法?

我查看了以下示例Google Persistence Migration Sample

我发现了基于数据库版本4可能场景的Migration varargs。

public static UsersDatabase getInstance(Context context) {
    synchronized (sLock) {
        if (INSTANCE == null) {
            INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                    UsersDatabase.class, "Sample.db") 
                    .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_1_4)
                    .build(); 
        } 
        return INSTANCE;
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是,假设我正在使用db v1中的Room,并且当我的应用程序到达db v10时,我将要编写多少种迁移方法?

在sqlite中,我们获得了已安装应用程序的当前数据库版本,onUpgrade而我们只是通过了switch情况而没有break语句,因此它可以满足所有数据库升级。

但是,我不确定,但是afaik,我们无法在房间中获取已安装应用程序的当前数据库版本,我们编写了所有可能的迁移方法。

但是感觉很不方便,如果我有db v10,则不宜编写总共45种方法!

有更好的解决方案吗?

database sqlite android android-room

4
推荐指数
1
解决办法
1766
查看次数