处理程序会提前开火

时间:2016-09-14 09:36:08

标签: c# android xamarin

我有一台带有集成bixolon打印机的设备。我想创建一个在打印机上打印的应用程序。我的OnCreate方法如下所示:

private class MyHandler : Handler
    {
        public override void HandleMessage(Message msg)
        {             
            switch (msg.What)
            {
                case BixolonPrinter.MessageUsbDeviceSet:
                    Console.WriteLine("U S B     device::: " + msg.Obj);
                    //can not return the msg.Obj back to the button event
                    break;
            }         
        }
    }

我的处理程序如下:

play-json

问题是,一旦创建了BixolonPrinter的实例,它就会立即触发Handler。无法将Handler的结果恢复到按钮事件。为了使这个问题更复杂,BixolonPrinter是一个Java .jar文件。那么如何才能将结果返回到事件按钮?

1 个答案:

答案 0 :(得分:0)

当您使用MainLooper时,所有内容都将在主线程上执行。创建HandlerThread以进行交互。要推迟执行,请使用Handler.postDelayed()方法,或者,更好的是,使用RxJava库