Questions tagged «handler»

在观察者模式中,事件处理程序是在观察者上侦听由主体调度的事件的函数或方法。也称为事件监听器。

30
在Android中延迟后如何调用方法
我希望能够在指定的延迟后调用以下方法。在目标c中,有类似以下内容: [self performSelector:@selector(DoSomething) withObject:nil afterDelay:5]; android和java中的此方法是否等效?例如,我需要能够在5秒钟后调用一个方法。 public void DoSomething() { //do something here }
769 java  android  handler  delay 

12
AsyncTask在概念上确实存在缺陷吗?还是我只是想念一些东西?
我已经研究了这个问题好几个月了,并提出了不同的解决方案,我不满意,因为它们都是大型黑客。我仍然不敢相信,一个存在设计缺陷的类将其纳入了框架,并且没有人在谈论它,所以我想我肯定一定会丢失一些东西。 问题出在哪里AsyncTask。根据文档吧 “允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。” 然后,该示例继续说明如何showDialog()在中调用某些示例性方法onPostExecute()。但是,这似乎完全是我想做的,因为显示对话框始终需要引用有效对象Context,而AsyncTask 绝不能持有对上下文对象的强引用。 原因很明显:如果活动被破坏而触发了任务,该怎么办?这可能一直发生,例如因为您翻转了屏幕。如果该任务将保留对创建它的上下文的引用,则您不仅会保留一个无用的上下文对象(该窗口将被破坏,并且任何 UI交互都会失败,并带有异常!),您甚至可能会冒险创建一个内存泄漏。 除非我的逻辑在这里有缺陷,否则这将转化为:onPostExecute()完全没有用,因为如果您无权访问任何上下文,在UI线程上运行此方法有什么好处?您在这里不能做任何有意义的事情。 一种解决方法是不将上下文实例传递给AsyncTask,而是传递一个Handler实例。这行得通:由于Handler松散地绑定了上下文和任务,因此您可以在它们之间交换消息而不会冒泄漏的风险(对吗?)。但这意味着AsyncTask的前提是错误的,即您不必费心处理程序。由于您是在同一个线程上发送和接收消息,因此这似乎在滥用Handler(您在UI线程上创建消息,并在同样在UI线程上执行的onPostExecute()中通过它发送消息)。 最重要的是,即使有了这种解决方法,您仍然面临这样的问题:当上下文被销毁时,您没有记录它触发的任务。这意味着在重新创建上下文时(例如,在屏幕方向更改后),您必须重新启动所有任务。这是缓慢且浪费的。 我对此的解决方案(在Droid-Fu库中实现)是WeakReference在唯一的应用程序对象上维护s从组件名称到其当前实例的映射。每当AsyncTask启动时,它都会在该映射中记录调用上下文,并且在每个回调中,它将从该映射中获取当前上下文实例。这样可以确保您永远不会引用过时的上下文实例,并且始终可以访问回调中的有效上下文,从而可以在其中进行有意义的UI工作。它也不会泄漏,因为引用很弱,并且在不再存在给定组件的实例时将其清除。 尽管如此,这是一个复杂的解决方法,并且需要对某些Droid-Fu库类进行子类化,这使其成为一种非常侵入性的方法。 现在我只想知道:我只是大量丢失了东西还是AsyncTask确实完全有缺陷?您的经验如何处理?您是如何解决这些问题的? 感谢您的输入。

10
ng-repeat完成后调用函数
我要实现的基本上是“重复完成渲染”处理程序。我能够检测到何时完成,但无法弄清楚如何从中触发功能。 检查小提琴:http : //jsfiddle.net/paulocoelho/BsMqq/3/ JS var module = angular.module('testApp', []) .directive('onFinishRender', function () { return { restrict: 'A', link: function (scope, element, attr) { if (scope.$last === true) { element.ready(function () { console.log("calling:"+attr.onFinishRender); // CALL TEST HERE! }); } } } }); function myC($scope) { $scope.ta = [1, 2, 3, …

7
jQuery .live()vs .on()方法,用于在加载动态html后添加click事件
我正在使用jQuery v.1.7.1,显然不赞成使用.live()方法。 我遇到的问题是,使用以下方法将html动态加载到元素中时: $('#parent').load("http://..."); 如果我尝试在之后添加click事件,则不会使用以下两种方法之一注册事件: $('#parent').click(function() ...); 要么 // according to documentation this should be used instead of .live() $('#child').on('click', function() ...); 实现此功能的正确方法是什么?它似乎只对.live()有效,但我不应该使用该方法。请注意,#child是动态加载的元素。 谢谢。


12
Android上的AsyncTask和错误处理
我正在从使用转换我的代码 Handler为AsyncTask。后者非常擅长-异步更新和主UI线程中结果的处理。我不清楚的是,如果出现问题,如何处理异常AsyncTask#doInBackground。 我这样做的方法是拥有一个错误处理程序并将消息发送给它。它工作正常,但是是“正确”的方法还是有更好的选择? 我也知道,如果将错误处理程序定义为“活动”字段,则应在UI线程中执行。但是,有时(非常不可预测),我会收到异常消息,说明从触发的代码Handler#handleMessage在错误的线程上执行。我应该在其中初始化错误处理程序Activity#onCreate吗?放置runOnUiThread到Handler#handleMessage似乎是多余的,但执行非常可靠。

9
UINavigationController“ pushViewController:animated”的完成处理程序?
我UINavigationController打算使用创建一个应用程序来展示下一个视图控制器。使用iOS5,有一种新的呈现方法UIViewControllers: presentViewController:animated:completion: 现在我问我为什么没有完成处理程序UINavigationController?只有 pushViewController:animated: 是否可以像新创建自己的完成处理程序presentViewController:animated:completion:?

4
停止handler.postDelayed()
我通过new Handler()。postDelayed(new Runnable().....来调用多个Handler。当我单击返回时如何停止它? public class MyActivity extends AppCompatActivity implements OnClickListener { private Button btn; private Handler handler; private Runnable myRunnable; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btn = (Button) findViewById(R.id.trainingsstart); btn.setOnClickListener(this); } @Override public void onClick(View v) { Handler handler = new Handler(); Runnable myRunnable = new Runnable() { …

3
Timertask或Handler
假设我想每隔10秒执行一次操作,而不必更新视图。 问题是:将timer与timertask一起使用会更好(我的意思是更有效): final Handler handler = new Handler(); TimerTask timertask = new TimerTask() { @Override public void run() { handler.post(new Runnable() { public void run() { <some task> } }); } }; timer = new Timer(); timer.schedule(timertask, 0, 15000); } 或只是带有延迟的处理程序 final Handler handler = new Handler(); final Runnable r …


7
从服务访问UI线程处理程序
我正在尝试Android上的一些新功能,需要访问UI线程的处理程序。 我知道以下几点: UI线程具有自己的处理程序和循环程序 任何消息都将放入UI线程的消息队列中 循环程序拾取事件并将其传递给处理程序 处理程序处理消息并将特定事件发送到UI 我想拥有必须获取UI线程处理程序并将消息放入此处理程序的服务。这样就可以处理此消息并将其发布到UI。在这里,该服务将是由某些应用程序启动的普通服务。 我想知道这是否可能。如果是这样,请提出一些代码段,以便我可以尝试。 关于吉里什

7
带参数的Javascript事件处理程序
我想制作一个通过事件和一些参数的eventHandler。问题在于该函数没有获取元素。这是一个例子: doClick = function(func){ var elem = .. // the element where it is all about elem.onclick = function(e){ func(e, elem); } } doClick(function(e, element){ // do stuff with element and the event }); “ elem”必须在匿名函数之外定义。我如何才能在匿名函数中使用传递的元素?有没有办法做到这一点? 那么addEventListener呢?我似乎根本无法通过addEventListener传递事件吗? 更新资料 我似乎用'this'解决了问题 doClick = function(func){ var that = this; this.element.onclick = function(e){ func(e, …

3
什么是处理程序[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 嗨,我试图学习一些与编程相关的术语,而且我经常碰到单词处理程序。任何人都可以解释处理程序的含义以及何时使用该术语。
86 handler 

11
Java中的事件监听器和处理程序有什么区别?
用Java的一般术语来说,有事件的侦听器和处理程序。 我的意思是我不知不觉地使用它们,无论API中有哪些可用。 我的问题是,在什么情况下我们使用侦听器,在什么情况下我们使用事件的处理程序? 它们之间有什么区别?特性?? 我已经搜索了原因,但找不到Java的正确解释。

3
如何编写具有多个任务的Ansible处理程序?
为响应更改,我有多个应运行的相关任务。如何编写具有多个任务的Ansible处理程序? 例如,我希望处理程序仅在已经启动时才重新启动服务: - name: Restart conditionally shell: check_is_started.sh register: result - name: Restart conditionally step 2 service: name=service state=restarted when: result
80 handler  ansible 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.