问题标签 [android-threading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 从其他端点加载内容时如何加速我的应用程序?
我制作了这个应用程序来从各种其他 API 中提取信息。它还没有完成,但到目前为止,AsyncTask 加载的数据对我来说太慢了,有时会跳过 1000 多帧。有什么办法可以加快速度吗?
在旁注中,如果有人可以帮助我从应用程序中新闻标签的网址加载图像,我将不胜感激。
谢谢!
如果您更喜欢直接发布的代码,这是我的仓库: https ://github.com/dayemsaeed/Covid-19
这是我的代码:
代码
MainActivity.java
排序JSONArray.java
StatsFragment.java
CustomListAdapter.java
StatsLoader.java
ViewPageAdapter.java
新闻片段.java
新闻加载器.java
布局
activity_main.xml
list_view.xml
view_page.xml
java - 主线程要处理多少工作量?关于Android中线程的一些问题
我有 Java 的背景,最近,我正在学习 Android 中的 Java,所以对于像我这样的新手来说,这个问题似乎是压倒性的。无论如何,这里有问题(斜体)。
我使用模板(电话和平板电脑 - 空活动)创建了一个项目,然后使用布局编辑器将 2 个纯文本添加到 GUI。之后,我在MainActivity.java中添加了一些代码(类中没有其他内容)。
当我运行程序时,我收到了这个警告:I/Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.
正如这些链接中显示的答案:应用程序可能在其主线程上做太多工作,而应用程序可能在其主线程上做太多工作。如何修复它。这可能不是一个真正的问题,因为我使用的是模拟器并且代码/资源来自模板,这可能不是最佳的。
然而,究竟是什么决定了这里的“工作量太大”这个词?当我注释掉 中的两行时onBtnClick
,警告就消失了。虽然我使用的是模拟器,但findViewById()
它相当“重”,足以产生警告。我知道60 fps(每帧 16 毫秒)是标准,但它仍然不能回答我的问题。
此外,有人可以简化现在正在执行的主线程/方法(在我的情况下)吗?我知道main
Android 中的类/线程与常规 Java 编程中的不同(如此处所回答)。
从概念上讲,主线程是否与 UI 线程完全不同(如invokeLater
在 Java Swing 中使用)?我猜它是,正如谷歌文档所暗示的那样,“因此,主线程有时也称为 UI 线程。但是,在特殊情况下,应用程序的主线程可能不是它的 UI 线程;有关更多信息,请参阅线程注释。 "
更新
- (09/30) 对于我遇到的问题,现在我已经阅读了更多关于Activity 生命周期,我开始对下面发生的事情有所了解。但是,我仍在寻找两个斜体问题的答案。
android - 如何以原子方式使用两个 NotifyDataSetChanged()
总结一下我的问题:
我有一个项目列表和一个单击以查询 API 的按钮
当我单击按钮时,会调用两种方法。第一种方法显示一个进度条,清除列表,并使用notifyDataSetChanged()
第二种方法使用retrofit进行查询,在回调方法中,我隐藏进度条,添加到列表并调用notifyDataSetChanged();
我的问题是当我一个接一个地调用这两个时:
带有改造调用的第二种方法有时会返回一个 IndexOutOfBounds 异常,因为 methodOne() 调用mList.clear()
并且mAdapter.notifyDataSetChanged();
当我对 mList 进行编辑时。
我的问题是我怎样才能让这两者原子地发生,这样它们就不会相互干扰? (我希望 methodOne() 甚至在查询发生在 methodTwo 之前做所有事情)
android - RxJava如何创建一个以不同延迟执行多个作业的间隔?
我对 RxJava 很陌生,所以我的问题可能完全是愚蠢的,但我不知道该怎么做。
所以我有N个实现以下接口的工作
我想要实现的是一个类似计时器的功能,每次经过一段时间后都会调用这些Worker
s函数。job()
interval()
到目前为止我尝试过的
这工作正常,在给定时间过去后,作业是异步执行的。
但这只执行了一次。我知道我需要以interval()
某种方式使用操作员,但无法理解它。
提前致谢
android - 在 Handler 线程的队列中添加匿名可运行对象会导致内存泄漏吗?
如果Activity VS ViewModel组件中存在此代码会导致内存泄漏吗?
用扩展 Runnable 的静态类替换匿名可运行类会有什么不同吗?这个视频教程中提到了@4:13 !
为什么匿名的 runnable 会持有对 Activity 或 ViewModel 的引用?
android - 如何解决致命异常:DefaultDispatcher-worker-4
我已经编写了一个新用例来与使用 Flow 的 api 进行通信,我猜我没有在主线程和 IO 线程之间的用例中正确处理线程,
这是我得到的错误
错误出现在 .handleStartfilllingClicked(view, it) 中。搜集
我正在调用 startfilllingUseCaseFlow 用例,这可能是问题所在
开始填充用例流
我猜我在这里没有正确处理 IO 和主线程
你能建议我在哪里弄错了吗
谢谢R
android - 不频繁的 Handler.post 导致大量丢帧和崩溃
我有一个简单的线程来监听 UDP 广播以发现我网络上的设备。每当它接收到广播时,它都会在 UI 线程上发布 aRunnable
以Handler
将设备的 IP 添加到ArrayList
. 最多每 2 秒接收一次数据包。我已验证帖子仅每 2 秒发生一次。
我的应用程序也有一些片段。每当我NavController.navigate()
在片段之间切换使用时,我都会得到 100-400 帧丢失和 ANR。当我禁用线程,甚至只是禁用搜索重复项并将设备添加到 时ArrayList
,帧丢失消失,但搜索和添加时间不到 1 毫秒(根据调试打印)。
我已经阅读了一堆关于问题的其他线程Handlers
,但没有一个有帮助。知道为什么我的帖子会导致这么多丢帧吗?
这是线程的运行方法:
以及发布到 UI 线程的 addGeophone 函数:
android - 使用 Kotlin Coroutines 更新我的 TextView 会导致它崩溃:
在 Kotlin 编程方面,我是个大新手。我对线程有基本的了解。
事情是这样的:单击按钮后,我试图每秒更新一次我的 TextView(在片段内)。我将按钮的 onClick 函数设置为包含 10 个 Coroutine 的 delay(1000) 调用。但我总是得到这个错误:
有什么方法可以在不使用 Kotlin Coroutines 的情况下更新我的 UI 视图?
使用我当前的代码,应用程序在单击按钮 2 秒后崩溃。这是我的代码(如您所见,这很垃圾):
android - 没有主线程可以存在后台线程吗?
如果我从后台/最近应用程序列表中删除应用程序,UI 线程也会停止,以便系统可以回收与 UI 关联的内存。现在考虑一个触发 PeriodicWorkRequest 的情况,它反过来启动一个工作人员(在应用程序从后台/最近的应用程序列表中删除之后)。worker 隐式运行在单独的后台线程上,并正在执行分配的任务。但是 UI/Main 线程是否也与工作线程一起创建?
应用程序可以在没有活动的情况下存在。它可以有其他组件,如服务等,没有 UI。在这种情况下,UI/Main 线程是否仍然存在?
或者在任何其他情况下,是否可以存在没有 UI/主线程的进程,只有一个工作线程?
java - Android 服务未通知它已启动且 UI 间歇性锁定
我间歇性地遇到问题,似乎当 UI 锁定时服务通知没有弹出,但是服务正在运行。我认为这是一个线程问题锁定我已经设法抓住了崩溃的一小部分,但将不得不等待另一个尝试抓住整个日志。错误是:
我的服务如下,有相当多的代码未使用或不相关,但我认为共享整个文件是明智的,我在后台线程中启动服务,或者我认为但现在已经确认它实际上是在 main 中运行,但是 UI 并不总是被阻止?
希望有人可以告诉我线程是否正确并阐明所遇到的问题