首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在特定线程中运行Myo侦听器

如何在特定线程中运行Myo侦听器
EN

Stack Overflow用户
提问于 2014-12-22 16:39:48
回答 1查看 314关注 0票数 0

我正在开发智能家庭控制应用程序,使用Myo臂章。我正在使用他们的SDK,但我运行的问题,我不知道如何解决。

我有后台服务,它正在侦听Myo提示,但是即使SDK和设备侦听器也在后台线程中初始化,它的事件(例如onPose)是在主线程中引发的。

有没有办法强迫SDK在后台线程上引发事件?

服务代码:

代码语言:javascript
复制
    public class ListeningService extends Service {

    @Override
    public void onCreate() {
        HandlerThread thread = new HandlerThread("MyoListener",
                Process.THREAD_PRIORITY_BACKGROUND);
        thread.start();
        mServiceLooper = thread.getLooper();
        mServiceHandler = new ServiceHandler(mServiceLooper, this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {   
        Message msg = mServiceHandler.obtainMessage();
        msg.arg1 = startId;
        mServiceHandler.sendMessage(msg);

        return START_STICKY;
    }

    private final class ServiceHandler extends Handler {

        private Context context;

        public ServiceHandler(Looper looper, Context context) {
            super(looper);
            this.context = context;
        }

        @Override
        public void handleMessage(Message msg) {
            Hub hub = Hub.getInstance();
            if (!hub.init(context, getPackageName())) {
                showToast("Couldn't initialize Hub");
                stopSelf();
                return;
            }

            mListener = new MyoListener(context);
            hub.addListener(mListener);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-22 17:05:26

嗯,所以我发现了问题所在。

如果您想指定您的侦听器应该在哪个线程上运行,则必须在该线程上初始化集线器(在应用程序运行时完全是第一次)。

我使用ScanActivity连接Myo,我在应用程序的UI部分(运行在主线程中)中使用了它,由于在使用ScanActivity之前必须初始化Hub,所以首先在主线程中初始化它,因此侦听器事件也是在主线程中引发的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27606757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档