在线程内添加和清除窗口标志

时间:2014-05-01 11:23:02

标签: android multithreading layoutparams android-windowmanager

我想在线程中添加并清除窗口标志但不起作用。基本上我希望我的线程让屏幕保持两秒钟,然后在标志上清除屏幕。

这是我的代码:

public class WriteCommThread extends Thread {

    private long time=2000;

    public WriteCommThread(float count) {


        time = (long) count;

    }

    public void run() {
        while(connectionUnAbort==true){
            // Lock screen
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            slleep();
            //Unlock screen
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            connectionUnAbort=false;

        }
    }

public void slleep(){
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
        }
}

1 个答案:

答案 0 :(得分:1)

我在做研究后解决了这个问题,我发布了推荐的链接。

Answer Link

这是我解决问题的方法,而且效果很好。我在后台线程(run方法)中添加了这些可运行的类。睡觉后我可以清除标志以保持屏幕开启。

runOnUiThread(new Runnable() {
                 public void run() {

            //stuff that updates ui
                    MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                }
            });

runOnUiThread(new Runnable() {
                 public void run() {

            //stuff that updates ui
                    MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                }
            });