标签: handler

从服务访问UI线程处理程序

我在Android上尝试一些新东西,我需要访问UI线程的处理程序.

我知道以下内容:

  1. UI线程有自己的处理程序和循环器
  2. 任何消息都将放入UI线程的消息队列中
  3. looper接收事件并将其传递给处理程序
  4. 处理程序处理消息并将特定事件发送到UI

我希望我的服务必须获取UI线程处理程序并将消息放入此处理程序.这样就可以处理此消息并将其发布到UI.这里的服务将是一个正常的服务,将由一些应用程序启动.

我想知道这是否可行.如果是这样,请建议一些代码片段,以便我可以尝试.

关心Girish

service user-interface multithreading android handler

87
推荐指数
3
解决办法
7万
查看次数

什么是处理程序

嗨,我正在尝试学习一些编程相关的术语,我经常来到单词处理程序.任何人都可以请求解释处理程序的含义以及何时使用该术语.

handler

77
推荐指数
3
解决办法
4万
查看次数

Java中的事件监听器和处理程序有什么区别?

在Java的一般术语中,有事件的侦听器和处理程序.
我的意思是我在不知不觉中使用它们,无论API中有哪些.

我的问题是,在什么情况下我们使用监听器,在什么情况下我们使用处理程序进行事件?

他们之间有什么区别?特点?

我搜索了原因,但找不到适当的Java解释.

java events listener handler

77
推荐指数
5
解决办法
8万
查看次数

带参数的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
});
Run Code Online (Sandbox Code Playgroud)

'elem'必须在匿名函数之外定义.如何在匿名函数中获取传递的元素?有没有办法做到这一点?

那么addEventListener呢?我似乎无法通过addEventListener传递事件吗?

更新

我好像用'这个'解决了这个问题

doClick = function(func){
    var that = this;
    this.element.onclick = function(e){
        func(e, that);
    }
}
Run Code Online (Sandbox Code Playgroud)

这包含我可以在函数中访问的this.element.

addEventListener

但我想知道addEventListener:

function doClick(elem, func){
    element.addEventListener('click', func(event, elem), false);
}
Run Code Online (Sandbox Code Playgroud)

javascript events event-handling handler

74
推荐指数
3
解决办法
14万
查看次数

如何创建Looper线程,然后立即发送消息?

我有一个工作线程,它位于后台,处理消息.像这样的东西:

class Worker extends Thread {

    public volatile Handler handler; // actually private, of course

    public void run() {
        Looper.prepare();
        mHandler = new Handler() { // the Handler hooks up to the current Thread
            public boolean handleMessage(Message msg) {
                // ...
            }
        };
        Looper.loop();
    }
}
Run Code Online (Sandbox Code Playgroud)

从主线程(UI线程,不重要)我想做这样的事情:

Worker worker = new Worker();
worker.start();
worker.handler.sendMessage(...);
Run Code Online (Sandbox Code Playgroud)

麻烦的是,这为我设定了一个漂亮的竞争条件:在worker.handler阅读时,没有办法确定工作线程已经分配给了这个领域!

我不能简单地HandlerWorker构造函数创建,因为构造函数在主线程上运行,因此Handler它将自己与错误的线程相关联.

这似乎不太常见.我可以提出几个解决方法,所有这些都是丑陋的:

  1. 像这样的东西:

    class Worker extends Thread {
    
        public volatile Handler handler; // actually private, of course …
    Run Code Online (Sandbox Code Playgroud)

multithreading android handler looper

73
推荐指数
1
解决办法
4万
查看次数

如何编写具有多个任务的Ansible处理程序?

为了响应更改,我有多个应该运行的相关任务.如何编写具有多个任务的Ansible处理程序?

例如,我想要一个仅在已经启动时重启服务的处理程序:

- name: Restart conditionally
  shell: check_is_started.sh
  register: result

- name: Restart conditionally step 2
  service: name=service state=restarted
  when: result
Run Code Online (Sandbox Code Playgroud)

handler ansible

66
推荐指数
3
解决办法
7万
查看次数

如何从postDelayed添加的处理程序对象中删除runnable?

我有一个"开放"的动画,Handler.postDelayed(Runnable, delay)用于在短暂延迟后触发"关闭"动画.但是,在打开和关闭之间的时间内,可能会有一个由点击触发的动画.

我的问题是,如何取消处理程序中的"关闭"动画?

android handler runnable postdelayed

65
推荐指数
4
解决办法
5万
查看次数

java.lang.RuntimeException:Handler(android.os.Handler)在死线程上向Handler发送消息

在我的应用程序中我使用IntentService发送短信.

    @Override
protected void onHandleIntent(Intent intent) {
    Bundle data = intent.getExtras();
    String[] recipients = null;
    String message = getString(R.string.unknown_event);
    String name = getString(R.string.app_name);
    if (data != null && data.containsKey(Constants.Services.RECIPIENTS)) {
        recipients = data.getStringArray(Constants.Services.RECIPIENTS);
        name = data.getString(Constants.Services.NAME);
        message = data.getString(Constants.Services.MESSAGE);
        for (int i = 0; i < recipients.length; i++) {
            if(!StringUtils.isNullOrEmpty(recipients[i])) {
                try {
                    Intent sendIntent = new Intent(this, SMSReceiver.class);
                    sendIntent.setAction(Constants.SMS.SEND_ACTION);
                    PendingIntent sendPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, sendIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                    Intent deliveryIntent = new Intent(this, SMSReceiver.class);
                    deliveryIntent.setAction(Constants.SMS.DELIVERED_ACTION);
                    PendingIntent deliveryPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, deliveryIntent, …
Run Code Online (Sandbox Code Playgroud)

service android handler android-intent runtimeexception

59
推荐指数
2
解决办法
5万
查看次数

没有为记录器找到处理程序

我是python的新手.我正在尝试登录python并且遇到了在尝试通过logger实例打印一些警告时,没有找到处理程序错误的处理程序.以下是我试过的代码

import logging
logger=logging.getLogger('logger')
logger.warning('The system may break down')
Run Code Online (Sandbox Code Playgroud)

我收到此错误没有找到记录器"logger"的处理程序

令我困惑的是,当我第一次尝试使用logging然后通过打印警告时logger,它工作得很好,就像

>>> import logging
>>> logging.warning('This is a WARNING!!!!')
WARNING:root:This is a WARNING!!!!
>>> 
>>> logger.warning('WARNING!!!!')
WARNING:logger:WARNING!!!!
Run Code Online (Sandbox Code Playgroud)

有人可以对第二种情况下发生的事情有所了解吗?

python logging handler

56
推荐指数
3
解决办法
7万
查看次数

TimerTask vs Thread.sleep vs Handler postDelayed - 每N毫秒最准确的调用函数?

每N毫秒调用一个函数最准确的方法是什么?

  • 线程与Thread.sleep
  • 的TimerTask
  • 处理程序与postDelayed

我使用Thread.sleep 修改了这个例子,它不是很准确.

我正在开发一个音乐应用程序,它将在给定的BPM上播放声音.我知道创建一个完全准确的节拍器是不可能的,我不需要 - 只是想找到最好的方法来做到这一点.

谢谢

java multithreading android handler timertask

54
推荐指数
2
解决办法
3万
查看次数