该文件 https://developer.android.com/topic/libraries/architecture/viewmodel#sharing描述了如何在不同的片段之间共享相同的ViewModel。
我的页面有些复杂 单个“活动”应用程序中其中包含容器和选项卡片段。每个此类页面都有自己的ViewModel,应与所有包含的片段共享。
这里的关键技巧是使用Activity而不是Fragment来保存我的ViewModel。
问题是我的活动可以有多个具有自己的模型的页面,并且始终保持特定页面的视图模型是浪费设备资源。
当用户离开页面时,是否有任何方法可以控制ViewModel的生命周期以销毁它?
我想使用容器片段而不是活动:
model = ViewModelProviders.of(getPageContainerFragment()).get(SharedViewModel.class);
Run Code Online (Sandbox Code Playgroud)
但是发现这个想法不是很好,因为所有子片段都应该了解父元素,而这可能不是很好。
是否有其他方法可以正确处理这种情况?
android model-view android-fragments android-architecture-components android-jetpack
我正在尝试用于@angular/localize
i18n。
我发现它实际上是为每种语言构建完全独立的包。
有什么方法可以让它在所有国际化包中共享一些通用部分,例如资产(所有静态文件)、样式、图标,可能还有一些非 UI 类(服务、防护、管道等)?换句话说,将我的i18n.sourceLocale
语言的全部内容保留在根文件夹中,并仅将 i18n 实际上不同的内容放在 lang 子文件夹下?
以下是我的部分内容angular.json
:
"i18n": {
"sourceLocale": "en-US",
"locales": {
"uk": "src/locale/messages.fr.json",
"ru": "src/locale/messages.es.json"
}
},
"configurations": {
"fr": {
"localize": ["fr"],
"baseHref": "/fr/",
"outputPath": "dist/fr/"
},
"ru": {
"localize": ["es"],
"baseHref": "/es/",
"outputPath": "dist/es/"
}
Run Code Online (Sandbox Code Playgroud) 关于函数式编程,特别是新的Java 8流API,有太多的炒作.它被宣传为旧的良好循环和命令式范例的良好替代品.事实上,有时它看起来很不错并且做得很好.但性能呢?
例如,这是关于此的好文章:Java 8:没有更多循环 使用循环,您可以通过一次迭代完成所有工作.但是使用新的流API,您将链接多个循环,这使得它更慢(是不是?).看看他们的第一个样本.在大多数情况下,Loop甚至不会遍历整个阵列.但是,要使用新的流API进行过滤,您必须遍历整个数组以过滤掉所有候选项,然后您将能够获得第一个.
在这篇文章中提到了一些懒惰:
我们首先使用filter操作来查找具有Java标记的所有文章,然后使用findFirst()操作来获取第一个匹配项.由于流是惰性的并且过滤器返回流,因此该方法仅处理元素,直到找到第一个匹配.
作者对这种懒惰的意思是什么?
我做了简单的测试,它表明旧的良好循环解决方案可以快速运行10倍然后流式处理.
public void test() {
List<String> list = Arrays.asList(
"First string",
"Second string",
"Third string",
"Good string",
"Another",
"Best",
"Super string",
"Light",
"Better",
"For string",
"Not string",
"Great",
"Super change",
"Very nice",
"Super cool",
"Nice",
"Very good",
"Not yet string",
"Let's do the string",
"First string",
"Low string",
"Big bunny",
"Superstar",
"Last");
long start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
getFirstByLoop(list);
}
long end = …
Run Code Online (Sandbox Code Playgroud) android ×1
android-architecture-components ×1
angular ×1
java-8 ×1
java-stream ×1
model-view ×1
performance ×1
web ×1