问题标签 [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.

0 投票
2 回答
73 浏览

android - 使用 AsyncTask 在线程之间传递的实例变量的行为是什么?

我了解在多个线程之间访问共享实例变量是不安全的(除非该变量已声明volatile且正确synchronized)。我试图理解使用 Android 将共享实例变量传递给后台线程的语义AsyncTask

考虑以下代码:

我们对局部变量cvin的状态了解doInBackground()多少?具体来说,

  • 保证其中包含哪些键值对。

  • 其中可能包含哪些键值对?

  • doInBackground()返回什么?

0 投票
1 回答
54 浏览

java - 启动和中断并再次启动线程

我在android中创建活动时启动了一个线程

当单击停止时,它将中断线程以在特定时间查看我的数据,然后我通过单击按钮启动线程启动它将再次启动线程

有时它工作正常,有时我得到中断错误,

该怎么办?

0 投票
1 回答
36 浏览

android - Using AsyncTask with Runnable vs Creating AsyncTask Class

I recently came across a code snippet that used Runnable with AsyncTask, which I was not familiar with previously.

I would like to know how does this compare with following way where we create an AsyncTask class?

Are there any performance or other downsides of the first method?

0 投票
1 回答
331 浏览

android - 从 Room DB 返回项目数

我试图防止从 Room DB 中删除父级,如果它有通过外键关联的子级。

我正在研究学位跟踪器。如果一个学期有课程,则不能删除该学期。如果该学期没有课程,则可以删除该学期。我正在尝试获取具有相关术语 ID 的课程计数,并使用一个简单的 if 语句来删除该术语(如果它没有课程)并使用弹出警报(如果该术语有课程)并指示用户删除课程在删除该术语之前。

来自 TermEditorActivity.java

从视图模型:

从 AppRepository (这是我认为事情分崩离析的地方):

来自 TermDAO:

这会导致在按下删除按钮时崩溃的运行时错误。这个概念很简单 - 使用术语的 id 来查询课程数据库以获取具有术语 id 外键的课程数。如果没有,请删除该术语并返回到术语列表。如果有课程(计数> 0)提醒用户并完成而不删除。

没有线程的异常:

使用线程时,它会删除包含或不包含课程的术语,并且当术语附加课程时不会出现警报。在调试模式下运行,当只有一门课程时,coursecount 返回 0,因此查询运行不正常。

我需要做些什么来从线程中获取价值吗?

这是针对RESTRICT约束引发 SQLiteConstraintException 时的运行时错误的崩溃日志。即使使用异常也不会被捕获。

0 投票
2 回答
451 浏览

java - 移除回调后如何重用Android-Handler

我有一项服务,其中我使用处理程序每​​毫秒获取媒体播放器的时间。

但是,当我的服务未绑定到任何活动时,我想从 onUnbind() 的处理程序中删除回调;服务的方法。

当服务绑定到一个活动时,我想通过在 Rebind/onBind() 上发布相同的回调来重用我的处理程序;

但是,它不起作用。需要帮忙!

0 投票
1 回答
69 浏览

c# - 如何在 Xamarin.Android 中实现线程?

我正在尝试以 100 毫秒发送/发布,消息看起来像这样 xxxxxxxxxx 所以每 100 毫秒左右就会调用一次订阅。我的问题是,我认为它不够快,(即,如果当前订阅尚未完成并且正在调用另一个订阅/正在发布消息)

我在想,我如何才能继续填充列表,同时使用 Oxyplot 绘制图表。我可以为此使用线程吗?

0 投票
2 回答
1807 浏览

android - Android WorkManager 在运行时重新发送唯一任务

我有一个 android 应用程序需要在后台执行一些长时间运行的图像处理(处理它的很多块)

  • 我使用 WorkManager 来执行任务
  • 我使用用户通知来通知进度

版本

  • API 级别 28
  • 手机跑奥利奥
  • androidx.work:work-runtime:2.1.0

WorkManager 设置如下(简化代码)

作品本身使用以下参数提交

正如WORK_NAME上面的代码所独有的,我希望永远不会有两个任务同时运行(注意我尝试过ExistingWorkPolicy.REPLACE- 相同的问题)

作业正确启动,通知中的进度开始更新。过了一会儿,任务似乎又开始了,而前一个任务仍在运行。我从在两个状态之间切换的唯一通知中看到了这一点(通知年龄now和上一个年龄之间的时间,以及 0% 和上一个进度之间的进度)。现在显然有两个任务会更新相同的通知。我通过设置一个随机通知 ID 而不是唯一的 ID 来确认这一点,然后出现了两个通知,每个通知都过着自己的生活。

我想知道

  • 为什么 WorkManager 会在前一个任务仍在运行并且我没有从应用程序请求任何内容时再次提交此任务
  • 如果我只提交一个,怎么可能同时运行两个作业enqueueUniqueWork
0 投票
1 回答
180 浏览

java - 为什么这段代码会为线程的优先级提供这个输出?

我有以下代码onCreate()

输出是:

有人可以解释一下:
1)即使我setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);在下一行设置了日志显示优先级5。为什么?
2)-8第二个线程的优先级输出来自哪里?
3)10新线程的来源也来自哪里?

更新:
如果我删除该行Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
输出保持不变

0 投票
1 回答
100 浏览

android - Android,IntentService 与 HandlerThread 的自定义服务

我已经阅读了一篇关于线程内 Android 服务的文章,但有一件事我不明白。在帖子中,作者使用了自定义服务,因为它允许多任务处理,而 IntentService 则不允许。

https://guides.codepath.com/android/managing-threads-and-custom-services#custom-services

直到一切都好,但后来作者使用了HandlerThread只允许一个线程的,在我看来,这与普通的 IntentService 没有区别。

https://guides.codepath.com/android/managing-threads-and-custom-services#threading-within-the-service

我对吗?或者有什么我想念的吗?我正在查看这个,因为我想创建一个能够同时运行不同任务的 android 服务,我应该使用它ThreadPoolExecutorHandlerThread

0 投票
1 回答
12979 浏览

java - 如何创建一个新线程,Android Studio?

我有以下片段类:

这会更新玩家货币的 UI 显示。但是,由于在后台运行了许多不同的进程,因此该线程滞后并且存在问题。如何在单独的线程上运行它以避免这种情况?

编辑:我尝试过这样的事情:

但它没有帮助!

谢谢!