问题标签 [android-handler]
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.
android - Android AsyncTask [无法在未调用 Looper.prepare() 的线程内创建处理程序]
我已经创建了一个AsyncTask
基于函数的图像上传。上传后,我在onPostExecute()
. 我阅读了一些 StackOverflow 的答案,Runnable
尽管实施了不同的解决方案,但我仍然一遍又一遍地收到错误。
我的代码:
我的日志猫:
在 zapl 的建议后编辑:
android - 安排数据库更新并显示对话框
好的,我认为这是一个反复出现的问题,对此感到抱歉。我需要更新我的数据库,从网络收集一些数据并在下载数据时显示一个对话框。我有我的对话,数据很好并写入数据库。我正在做一些改进。今天,这从一个活动开始。我的意愿是这发生在所有应用程序中,并在一段时间后开始。这就是问题出现的时刻。我正在使用 AlertManager 来安排我的行动。我有一个 BroadcastReceiver,它检查我的数据库并开始从网络获取数据。在这一点上,我面临着问题。我的进度对话框没有显示,数据也不是完全来自网络。
来自广播接收器的代码:
阅读 StackOverflow 和 Kam 上的这些帖子:
BroadcastReceiver 中的 AlertDialog
如何将数据从 BroadcastReceiver 发送到 android 中的 Activity?
Android:更喜欢警报和意图接收器而不是服务<--这是 Kam
我的结论是:
- BroadcastReceivers 无法显示对话框,因为它们不是活动(如 Commonsware 指出的);
- BroadcastReceivers 无法处理导致应用程序崩溃的方向问题(我在覆盖 onCreateDialog 方法的活动中解决了这个问题);
- 处理程序未指示在广播接收器中使用;
- 服务未指示执行此类任务;
我想了一个办法来解决这个问题。创建一个继承自活动的类,并在其中处理方向问题,在其中安排我的广播以在某个时间下载内容并显示对话框。所有其他类都继承自它。我认为这个解决方案有效,但它是解决问题的重要解决方法。
对不起,如果我的问题太长了。我想讨论一些其他的解决方案(如果我提出的是一个有效的解决方案,我没有测试)。
android - 缩放动画中的循环未执行?
我在一个while循环内运行一个处理程序,针对一个纬度/经度跨度,所以如果我在某个跨度之外,该地图将自动放大。我正在使用完全相同的设置,比较缩放级别而不是跨度,它工作得很好。这就是我正在做的...
执行此代码后,Logcat 输出“认为我们应该!” (基本上淹没原木)无休止。但它从来没有对我的处理程序做任何事情......实际的 zoomIn 调用永远不会触发,它只会永远循环,直到我强制关闭我的应用程序。我究竟做错了什么?
android - 实现Handlers的基本方式
我在处理程序上有这个示例应用程序,它在某个时间触发一个日志,但是当我单击我的开始按钮时它似乎不起作用。下面是我的代码。
注意:当我点击我的按钮并实现handler.postAtTime()
它返回true
但它仍然不会在 DDMS 上显示日志,即使我已将我的时间选择器设置为距当前时间 1 分钟仍然不会在 DDMS 上触发日志消息
android - Android:设备重启后的现有处理程序?
我有一个关于处理程序及其在设备重新启动时是否存在的问题,假设我已经使用延迟 3 小时执行了 3 个处理程序postDelayed()
,我只是想知道,例如设备重新启动,这些线程是否仍然存在?还是我需要再次执行它们?如果是这样,我如何在设备重启后自动执行处理程序?我已经阅读了一些我需要依次启动接收器以运行服务的线程,但我真的很困惑如何去做。
android - 服务中的消息处理程序是静态的有多重要?
考虑一个相当基本的服务:
}
现在,如果我在运行 lint 的 eclipse 中开发它,我目前可以在两个选项之间进行选择:
- 上面的代码将在私有 final 类 IncomingMessageHandler 行上有一个警告,说它应该被声明为静态,以确保一切在运行时正常工作。
- 如果我将该类 (IncomingMessageHandler) 设为静态,它就不能再访问整个类 (KeepANumberService) 中的数据和函数,这对编码来说是一种痛苦(在某些情况下可能是不可能的?)。
那么,使消息处理程序静态化有多重要?为什么?
android - 使用监听器从线程访问活动
我有两个类:一个控制多个小部件的活动类,然后是一个实现线程的自定义 SurfaceView 类。(很常见)。我在 SurfaceView 类中实现了一个简单的自定义侦听器,只要我想在 Activity 类的各种小部件中更新线程中的某些值更改,我就可以触发该侦听器。
线程类:
每当我从 Activity 的类调用的方法中调用 onChange 时,它都可以正常工作。但是,每当线程本身更新它的状态(在我的例子中是一个重绘方法)并且我调用 onChange 方法时,我都会得到一个 CalledFromWrongThread 异常。有人可以解释为什么一个有效而另一个无效,以及从单独的线程实际实现小部件更新的最佳实践是什么?Activity 中的单独处理程序线程似乎没有必要,因为无论如何我都知道何时更新值。
android - Android 在 AsyncTask 中调用多个 Web 服务
我正在处理AsynTask
,单个 url 调用AsynTask
很好,但我想一个接一个地调用两个 Web 服务AsyncTask
,请你发送一些代码或想法。
我的代码:
android - 消息处理程序和弱引用问题
以下消息处理程序可以正常接收来自我的服务的消息...
然而,即使它在 AVD 中测试正常(我通过 DDMS 向它提供了一个大的 KML 文件)“对象路径 = message.obj;” 行有一个警告说“这个处理程序类应该是静态的,否则可能会发生泄漏”。
但是如果我说“static Handler handler = new Handler()”,它不会编译并抱怨我“不能对非静态字段 myMapView 进行静态引用。如果我不能进行这样的引用,我就做不到任何有用的东西。
这让我在这个问题上花了几个小时在谷歌上搜索,并且比我想知道的更多地了解弱引用。我发现经常发现的建议是我应该更换......
和
但这不会编译仍然抱怨我无法对非 dtatic 字段进行静态引用。所以,我一周或之前的问题是“我怎样才能为 android 编写一个消息处理程序,以便我的服务可以将数据发送到我的活动。即使我有工作代码,问题仍然与后缀“不泄漏内存”有关。谢谢,加里