我的活动中有一个Handler,它执行两项操作,对于GAME_ACTIVITY_UPDATE_UI消息,必须在主线程之外执行一些计算,对于GAME_ACTIVITY_REFRESH_UI必须在主线程中执行自身。我在活动之外有一个单独的线程,该线程必须针对这两种情况调用该处理程序,在一种情况下,必须尊重该处理程序在主线程之外,而在另一种情况下,必须尊重必须在主线程中执行代码。 问题是,当我的外部程序调用活动的处理程序时,handleMessage的代码始终在主线程中执行。在GAME_ACTIVITY_UPDATE_U…

2020年7月18日 0条评论 16点热度 阅读全文

我正在尝试实现诸如倒数计时器之类的功能,该功能可以在选定的一半分钟内显示一条消息。例如,如果我设置为6分钟,则当倒数计时器达到3分钟时,它将显示吐司,然后继续滴答。 它不起作用 我曾经问过这个问题,但是我被要求澄清我的问题,所以我希望它会解决。 // 6 min =360,000 millisecond final long millis=360000; new CountDownTimer(millis,1000) { @Override public void onTick(long millisUntilFi…

2020年6月28日 0条评论 10点热度 阅读全文

我正在尝试在我的应用中使用Handler。但是当我像这样实例化它时: Handler handler = new Handler(); 我收到以下错误。 Gradle: error: Handler is abstract; cannot be instantiated 当我检查解决方案时,它要求我实现以下方法: Handler handler = new Handler() { @Override public void close() { } @Override public void flush() { } …

2020年5月15日 0条评论 24点热度 阅读全文

我正在尝试在我的应用中使用Handler。但是当我像这样实例化它时: Handler handler = new Handler(); 我收到以下错误。 Gradle: error: Handler is abstract; cannot be instantiated 当我检查解决方案时,它要求我实现以下方法: Handler handler = new Handler() { @Override public void close() { } @Override public void flush() { } …

2019年11月28日 0条评论 10点热度 阅读全文

谁能看到任何原因导致它不起作用? override fun resetAnimations() { Log.d("MainActivity", "start") Handler().postDelayed( { reset()}, 1500) Log.d("MainActivity", "end") } fun reset(){ Log.d("MainActivity", "reset") } 我在 Activity 的任意位置调用了此方法,但从未调用过reset()方法。在日志中,我只得到以下内容 D/MainA…

2019年11月20日 0条评论 7点热度 阅读全文

我需要以最小的时间间隔运行两个函数。出于超出此问题范围的原因,起初,我试图控制Webview中运行的进程的时间(通过JavascriptInterface): webView.post(() -> functionA()); // ... wait 2 secs in javascript and then... webView.post(() -> functionB()); 尽管这在大多数情况下都能正常工作,但是对于一个用户而言,似乎这两个功能有时会立即彼此紧接着运行(顺序仍然正确,但没有时间间隔)…

2019年9月3日 0条评论 32点热度 阅读全文

在android服务中,我创建了用于执行某些后台任务的线程。我遇到一种情况,线程需要在主线程的消息队列上发布某些任务,例如Runnable。有没有办法获取主线程的Handler并将Message / Runnable从我的其他线程发布到它? 解决方案如下: 注意:此答案已引起广泛关注,我需要对其进行更新。自从原始答案发布以来,@ dzeikei的评论几乎和原始答案一样受到关注。因此,这里有2种可能的解决方案: 1.如果您的后台线程引用了Context对象: 确保您的后台工作线程可以访问Context对象(可以是Ap…

2019年7月3日 0条评论 12点热度 阅读全文

我的子 Activity 中有一个Handler,由主Activity调用。子类将此处理程序用于 postDelay 一些Runnable,但我无法管理它们。现在,在onStop事件中,我需要在完成Activity之前将它们删除(以某种方式调用finish(),但它仍然会反复调用)。无论如何,要从处理程序中删除所有回调吗? 解决方案如下: 以我的经验,这非常有效! handler.removeCallbacksAndMessages(null); 在removeCallbacksAndMessages的文档中,它说…

2019年6月16日 0条评论 32点热度 阅读全文

如果我启动一个后台线程,如果在线程终止之前从finishes()开始的 Activity 会发生什么。线程是否也将终止或保持 Activity 状态? new Thread(new Runnable() { public void run() { while (mProgressStatus > 0) { // Update the progress bar mHandler.post(new Runnable() { public void run() { progressbar.setProgress(m…

2019年2月7日 0条评论 12点热度 阅读全文