标签: handler

Android处理程序定期

这就是我想要实现的目标:

  1. 活动以没有ClickListener开始,并且有四个文本视图都具有白色背景

  2. 我想将textview 1的颜色更改为蓝色.等待2秒钟然后将其更改为白色并将textview 2更改为蓝色.等待2秒然后将其改回白色......依此类推,直到我将textview 4变为蓝色并返回白色.

  3. 完成后,我想添加ClickListener并等待用户输入.

我怎样才能做到这一点?我是Android的新手但是理解点点滴滴.

android handler

6
推荐指数
1
解决办法
2386
查看次数

将上下文传递给处理程序

是否可以将参数传递给 Android 处理程序?我有两段代码。

new Thread(){
        public void run(){
            for(;;){
                uiCallback.sendEmptyMessage(0);
                Thread.sleep(2000); //sleep for 2 seconds
            }
        }
    }.start();


    private Handler uiCallback = new Handler(){
    public void handleMessage(Message msg){
        //add a new blossom to the blossom ArrayList!!
        blossomArrayList.add(new Blossom(context, R.drawable.blossom));
    }
};
Run Code Online (Sandbox Code Playgroud)

我当然得到一个错误,因为 Handler 方法看不到我的上下文。这可能是因为这段代码

public BoardView(Context context){
    super(context);
Run Code Online (Sandbox Code Playgroud)

Context 在其他地方不可见,我想知道是否可以将它作为参数传递给我的 Handler。

编辑:我发布了两段主要代码来回答一个关于为什么我的 Blossom 对象需要上下文的问题。我自己也不是 100% 确定 >.> 也许你可以看看发生了什么。

public class Blossom{
private Bitmap blossom;
private float blossomX = 0;
private float blossomY = 0;
private Random generator = new Random(); …
Run Code Online (Sandbox Code Playgroud)

android view handler android-context

6
推荐指数
2
解决办法
1万
查看次数

SensorManager.registerListener(..,Handler处理程序),请举例?

我不明白如何使用这种方法,

sensorManager.registerListener(SensorEventListener侦听器,传感器传感器,int速率,处理程序处理程序);

(这里的文件)

1)如果它使用SensorEventListener,那么Handler的目的是什么?

2)请举例说明我可以传递给它的处理程序?

谢谢!

android handler

6
推荐指数
2
解决办法
1万
查看次数

你如何在PHP中获得多个错误处理程序?

我试过这个:

    set_error_handler('ReportError', E_NOTICE | E_USER_NOTICE);
    set_error_handler('ErrorHandler', E_ALL & ~(E_NOTICE | E_USER_NOTICE));
Run Code Online (Sandbox Code Playgroud)

但只有第二个有效.如何针对不同类型的错误使用不同的错误处理程序?

php function handler

6
推荐指数
1
解决办法
3503
查看次数

如何在Java Swing中为窗口关闭创建处理程序

当我的窗口(使用Java Swing创建)关闭时,我正在尝试调用函数来进行清理.在我的初始化代码中,我这样做:

public class FormLogin extends JFrame{
    private void initComponents(){
        ...
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt){
                formLoginWindowClosed(evt);
            }
        });
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我按下退出按钮时,从不调用函数"formLoginWindowClosed".我也尝试用java.awt.event.WindowAdapter作为参数创建监听器,但它也不起作用.我应该如何为窗口关闭创建监听器?提前致谢.

java swing window handler

6
推荐指数
1
解决办法
9593
查看次数

Android Handler改变了WeakReference

我的静态处理程序有一个WeakReference对我Activity(这是为了防止记录良好的内存泄漏问题).

我发布了一条很长的延迟消息,我希望这条消息传递给我的活动(应该在前台).

我担心的是,在方向改变时,我的活动被破坏,处理程序引用了应该被销毁的旧活动.

为了在我onCreate的活动中解决这个问题,我这样做了.

    if(mHandler == null)
        mHandler = new LoginHandler(this);
    else {
        mHandler.setTarget(this);
    }
Run Code Online (Sandbox Code Playgroud)

我的处理程序被声明为一个静态全局变量:

private static LoginHandler     mHandler            = null;
Run Code Online (Sandbox Code Playgroud)

并且实现类也是静态的,如下所示:

private static class LoginHandler extends Handler {

    private WeakReference<LoginActivity>    mTarget;

    LoginHandler(LoginActivity target) {
        mTarget = new WeakReference<LoginActivity>(target);
    }

    public void setTarget(LoginActivity target) {
        mTarget = new WeakReference<LoginActivity>(target);
    }

    @Override
    public void handleMessage(Message msg) {
        // process incoming messages here
        LoginActivity activity = mTarget.get();
        switch (msg.what) {
            case Constants.SUCCESS:
                activity.doSomething();
                break;

            default: …
Run Code Online (Sandbox Code Playgroud)

android weak-references handler

6
推荐指数
1
解决办法
3234
查看次数

Android 中的完成处理程序

我是一名 iOS 开发人员,最近刚尝试过 Android 开发。

在 iOS 中,我在我的代码中使用完成处理程序。

我想知道在Android开发中是否有等价物?

谢谢

android handler android-handler android-handlerthread

6
推荐指数
1
解决办法
2717
查看次数

处理程序中的 MySQL 回滚

我有一个存储过程,如果出现任何问题,我想在其中回滚。为了做到这一点,我使用了这样的 EXIT HANDLER:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        ROLLBACK;
    end;
Run Code Online (Sandbox Code Playgroud)

但是这样,当我调用这个存储过程时,如果有任何错误,存储过程就会成功,我不知道实际问题是什么。我希望客户端 (php) 记录错误以便对其进行故障排除。所以我这样修改:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        get diagnostics condition 1
              @p1 = MESSAGE_TEXT;
        ROLLBACK;
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @p1;
    end;
Run Code Online (Sandbox Code Playgroud)

所以现在存储过程回滚而不是抛出处理程序拦截的异常。这很酷,但有时 MESSAGE_TEXT 超过 128 个字符,在这种情况下我得到:

错误代码:1648。条件项“MESSAGE_TEXT”的数据太长

当然这个解决方案是不可接受的:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        get diagnostics condition 1
              @p1 = MESSAGE_TEXT;
        ROLLBACK;
        SET @p1=SUBSTRING(@p1,1,128);
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @p1;
    end;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以拦截任何异常,回滚然后向客户端抛出相同的异常?非常感谢您的帮助

php mysql sqlexception handler

6
推荐指数
1
解决办法
2764
查看次数

IRQ Handling from User Space Linux

I'm writting a driver for a synthesized device in an FPGA. The device has several IRQs and have requested them on my driver:

irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
rc = request_irq(irq, &Custom_driver_handler,IRQF_TRIGGER_RISING , DRIVER_NAME, base_addr);
Run Code Online (Sandbox Code Playgroud)

My problem is that i want that the irq_handler calls a function of an user space application. Is there any way to call my user space application from the irq_handler of the driver on kernel space??

I know i could save a flag from the …

linux driver handler irq userspace

6
推荐指数
1
解决办法
9167
查看次数

Python:如何将控制权返回给从 C 注册的原始信号处理程序?

我需要在我的代码中临时安装一个自定义信号处理程序。之后,我需要将控制权恢复到原始信号处理程序。我之前在其他 StackOverflow 答案中看到过以下内容:

# Save original signal handler
original_SIGINT_handler = signal.getsignal(signal.SIGINT)

# Install the new SIGINT handler
signal.signal(signal.SIGINT, handle_SIGINT)

# do stuff

# Return control to original signal handler
signal.signal(signal.SIGINT, original_SIGINT_handler)
Run Code Online (Sandbox Code Playgroud)

但是,如果原始信号处理程序是从 C 注册的,则这将不起作用。根据https://pymotw.com/2/signal/,如果原始信号处理程序是从 C 注册的,signal.getsignal(signal.SIGINT)则将返回None. 然后,当我们使用 恢复信号时signal.signal(signal.SIGINT, None),代码失败:

TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object

如果原始信号处理程序是在 C 中定义的,我将如何安装临时信号处理程序?

是否可以将功能“附加”到现有的信号处理程序中?鉴于这个其他 StackOverflow 答案,我觉得这样做可能是一种黑客方法,因为显然 Python 信号处理程序在 C 信号处理程序返回后运行。

有关更多上下文,我正在编写一个lldbPython 脚本,我需要ctrl+c在脚本内部临时捕获,这是通过临时安装我自己的 SIGINT 处理程序来完成的。离开我的脚本时,我需要恢复定义的原始ctrl+c …

python signals handler lldb

6
推荐指数
1
解决办法
970
查看次数