Android 从活动中唤醒等待触摸事件的线程?

Android 从活动中唤醒等待触摸事件的线程?,android,Android,我有一根线在等着你 我想要的是当用户触摸手机屏幕时通知这个等待的线程 private Runnable disconnectCallback = new Runnable() { @Override public void run() { // Perform any required operation on disconnect runOnUiThread(new Runnable() { @Override

我有一根线在等着你

我想要的是当用户触摸手机屏幕时通知这个等待的线程

private Runnable disconnectCallback = new Runnable() {
    @Override
    public void run() {
        // Perform any required operation on disconnect
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Toast.makeText(getBaseContext(),
                        "Your session expired Please Login again",
                        Toast.LENGTH_SHORT).show();
                try {
                    synchronized (disconnectCallback) {
                        disconnectCallback.wait();
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                final Logout l = new Logout();
                l.setContext(Ac2.this);// passing context of Ac3.java to
                                        // Logout.java
                l.execute(sessid, uname);
            }
        });
    }
};
在onTouch事件调用中:

    disconnectCallback.notifyAll();
试试这个

private Runnable disconnectCallback = new Runnable() {
    @Override
    public void run() {
        // Perform any required operation on disconnect
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Toast.makeText(getBaseContext(),
                        "Your session expired Please Login again",
                        Toast.LENGTH_SHORT).show();

            }
        });
        try {
            synchronized(disconnectCallback){
            disconnectCallback.wait();
            final Logout l=new Logout();
            l.setContext(Ac2.this);// passing context of Ac3.java to Logout.java
            l.execute(sessid,uname);

            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }
};
内奥托奇

synchronized (disconnectCallback) {
        disconnectCallback.notify();
    }

它给出了以下错误:java.lang.IllegalMonitorStateException:对象在wait()调用之前未被线程锁定也在disconnectCallback上等待,如:disconnectCallback.wait();顺便说一句,我建议将等待相关代码移到UI线程上运行的外部。发生以下错误:Activity done(在应用程序MyapplicationName中)未响应您是否在注销内部执行任何与UI相关的任务?发生以下错误:Activity done(在应用程序MyapplicationName中)未响应在logout.java中它调用一个php文件并移动到登录屏幕(以前的活动)
synchronized (disconnectCallback) {
        disconnectCallback.notify();
    }