【发布时间】:2018-04-08 14:07:09
【问题描述】:
我的搜索没有返回答案,而是返回一两个未回答的问题。我会尝试用一种可能会得到答案的方式来表达它。
TL;DR 版本:
我不知道我们如何能够从 AndroidViewModel 类启动 (VPN) 服务。
加长版:
通常,我会从一个活动中启动这样的服务:
@Override
public void onClick(View v) {
Intent intent = VpnService.prepare(this);
if (intent != null) {
startActivityForResult(intent, 0);
} else {
onActivityResult(0, RESULT_OK, null);
}
}
显然,在 MVVM 中,我想将点击事件传递给 AndroidViewModel(或者只是 ViewModel,但我需要 Context,所以它必须是 AndroidViewModel),然后我想在那里启动服务。
我应该这样做吗?看起来很乱。
public void startStopButtonWasClicked(WeakReference<Activity> MainActivity) {
//do other stuff
Intent intent = VpnService.prepare(MainActivity.get());
if (intent != null) {
application.startActivity (intent, 0);
MainActivity.get().startActivityForResult(intent, 0);
} else {
MainActivity.get().onActivityResult(0, RESULT_OK, null);
}
}
或者我应该在VM类中实现onActivityResult?
编辑:这甚至是不可能的:MainActivity.get().onActivityResult(0, RESULT_OK, null);
【问题讨论】:
标签: android android-intent mvvm android-service android-viewmodel