带有 ViewModel 和 Lifecycleowner 的 App Widget

App Widget with ViewModel and Lifecycleowner

我在我的项目中使用 MVVM。但是当我创建 App Widget 时,他不支持 updateAppWidget()

中的 LifecycleOwner
var model: CurrencyViewModel
model = ViewModelProvider(this).get(CurrencyViewModel::class.java)

我有机会从 App Widget 访问模型吗?

这不是 ViewModelProvider 的用途。当小部件为 运行 时,activity 可能会与其 ViewModel 一起被销毁。 AppWidgetProvider 本身并没有真正的生命周期。

如果您想从应用程序获取数据到应用程序小部件,您应该将其保存在 SharedPreferences 或数据库中。

/**
     * Creates a {@link ViewModelProvider}, which retains ViewModels while a scope of given Activity
     * is alive. More detailed explanation is in {@link ViewModel}.
     * <p>
     * It uses the {@link FragmentActivity#getDefaultViewModelProviderFactory() default factory}
     * to instantiate new ViewModels.
     *
     * @param activity an activity, in whose scope ViewModels should be retained
     * @return a ViewModelProvider instance
     * @deprecated Use the 'by viewModels()' Kotlin property delegate or
     * {@link ViewModelProvider#ViewModelProvider(ViewModelStoreOwner)},
     * passing in the activity.
     */
    @Deprecated
    @NonNull
    @MainThread
    public static ViewModelProvider of(@NonNull FragmentActivity activity) {
        return new ViewModelProvider(activity);
    }