android相关内容
如果新列表只具有已修改的项,但具有相同的实例,则ListAdapter(实际上是其实现中的AsyncListDiffer)不会更新列表,这是一个已知问题。如果您在内部使用相同的对象,则更新也不适用于新实例列表。 要使所有这些都起作用,您必须创建整个列表和内部对象的硬拷贝。 实现这一目标的最简单方法: items.toMutableList().map { it.copy() } 但
..
我见过推荐切换到StateFlow的文章。 就像here。 同样在新的Android工作室中,StateFlow支持自动包含在数据绑定的功能中,包括协程依赖。 大多数应用程序已经在使用实时数据。 我们是否应该从LiveData迁移到StateFlow?有什么好处? 推荐答案 状态流和实时数据没有太大区别。主要区别在于State flow需要初始值,因此不需要检查是否为空。第二个不同之处
..
我希望使用LiveData来处理定制视图及其包装片段之间的通知类型,因为它已经具有生命周期感知功能。但似乎LiveData可能会丢失值:它只会更新到其最新状态,也不会在其观察器处于非活动状态期间激发值。 我已经查看了Google代码示例中的SingleLiveEvent purpose,但该解决方案似乎尚未经过战斗测试,而且ticket最近仍在尝试改进该解决方案。 所以我正在寻找一种简
..
我正在开发一个Android应用程序,正在使用Android操作系统中的新架构组件:LiveData、ViewModel和Room。 我对Room实现有一个小问题,那就是创建一个@Relationship,它返回连接查询(多对多关系)的结果。 我的数据库结构如下: @Entity public class Student{ @PrimaryKey private int id;
..
我使用的是MVVM架构。我有一个活动和几个片段,我想在活动中的API中发出一个请求,然后使用ViewModel,感谢获得的数据,将它们显示在片段中。我该怎么做呢?我当前的解决方案不起作用: 活动: viewModelRoutesFragment = new ViewModelProvider(this).get(ViewModelRoutesFragment.class); viewM
..
我使用Flow而不是LiveData来收集片段中的数据。在片段A中,我观察(或者更确切地说是收集)片段的onView中的数据如下所示: lifecycleScope.launchWhenStarted { availableLanguagesFlow.collect { languagesAdapter.setItems(it.allI
..
何时使用MutableLiveData和LiveData表示使用方法的区域: MutableLiveData getUser() { if (userMutableLiveData == null) { userMutableLiveData = new MutableLiveData(); } return userMutableLi
..
安装应用程序时遇到奇怪的问题。 当我编译我的项目时没有错误,但当我尝试启动它时, 安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误。 我尝试了太多与安装错误相关的事情:INSTALL_PARSE_FAILED_MANIFEST_MARMAND错误,也遵循该规则,但出现问题。
..
我正在尝试遵循Google关于继续使用KeyboardView.Java的建议:https://developer.android.com/reference/android/inputmethodservice/KeyboardView 我已经复制并调整了KeyboardView.java、Keyboard.java和com.android.inder.R中标记为不推荐使用的部分,并使用样
..
我们正试图使用Xamarin表单构建一个聊天应用程序,但我们一直在Android键盘上收到这个令人讨厌的错误。每当点击“发送”按钮时,条目(用于聊天的文本框)上的焦点就会消失,键盘也会消失。这不是我们想要的,因此我们将以下行添加到TapGestureRecognizer: messageEntry.Focus(); 但由于某些原因,这种情况发生得不够快,经常会出现键盘关闭并立即重新打开的
..
我正在开发Cordova应用程序。这将使用HTTPS URL加载应用程序加载的客户列表。 在调试模式下运行时(使用Cordova Run Android)应用程序工作正常,但当我为同一应用程序创建发布版本时,应用程序无法连接到服务器。出现错误“无法连接到服务器。状态为0”。 这是我的技术堆栈跟踪。 Cordova V4.0 Cordova Android Platform v3.6
..
我已经做了一个瓷砖,应该可以显示当前的心率。磁贴从共享的偏好中获取心率,它工作得很好,但我需要像每一秒一样刷新它。目前我只能使用.setFreshnessIntervalMillis(1000*60) 每分钟刷新一次 文档说我可以使用此命令从应用程序中的任何位置更新我的磁贴... TileService.getUpdater(context) .requestUpdate(
..
出于测试目的,我想通过ADB停止并重新启动我的Android Wear Watch Face服务。停止它似乎工作正常: adb shell am force-stop com.package.name 但再次启动该服务让我感到困惑。Watch Faces是而不是活动,因此无法通过am start启动。我尝试在包上使用monkey命令,但不起作用。我尝试手动启动该服务: adb sh
..
请帮我实现以下两个TextView的排列: 左边是一个带有标题的简单TextView,右边是另一个TextView,它的左侧有一个可绘制的(这很重要,因为它我不能使用match_parent)。两个TextView都应wrap_content并按在其一侧。 如果其中一个TextView太长,它应该靠在另一个TextView上并换行自己的文本。 如果两个TextView都很长,则它们应该占
..
我有以下代码,当我在Adapter中单击viewHolder项时显示对话框片段 SpecialRequestNotFoundBottomSheetDialog { requestItem?.specialRequestEntity?.id?.let { id -> onCancelReasonsSelected(id, it) } }.show(it
..
我一直在搜索如何将ViewModel注入测试中,以便我可以对其进行测试。假设视图模型有一个带有某个业务逻辑交互程序的构造函数注入。我可以很容易地将它注射到碎片中,但在测试中没有成功。 @HiltAndroidTest class ViewModelTest val randomViewmodel: RandomViewmodel// now what ? since by viewMod
..
我想请求权限,并通过非阻塞函数进行。因为我需要上下文,所以不能从ViewModel中调用它。如何为碎片和调用暂停函数指定默认的UI作用域: class MapsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreate
..
我有一个suspend函数,它向服务器调用POST请求。我想在活动中配置一些文本以显示我从服务器收到的信息。 suspend fun retrieveInfo():String 我尝试在onCreate、onResume内部调用,但运行时崩溃。 runBlocking { retrieveInfo() } java.lang.RuntimeException
..
我读到了这个: How to optimize Firebase Realtime Database calls to improve performance? 据说为了优化性能,我们必须复制数据。因此,我在数据库中创建了一个名为users的节来保存所有用户对象: users uid -- name: "john" -- email: "j
..
我的内容提供商尝试在外部存储上创建文件,但它需要android.permission.WRITE_EXTERNAL_STORAGE 权限。我已将此权限添加到清单,但如果Build.VERSION.SDK_INT >= 23它无法创建文件。 因此,我希望在ContentProvider开始工作之前运行一个活动,以获得用户的许可。我怎么能做到这一点。谢谢。 注意:我不是在问如何获得运
..