【问题标题】:Adding and clearing window flags inside a thread在线程内添加和清除窗口标志
【发布时间】:2014-06-17 20:57:50
【问题描述】:

我想在线程内添加和清除窗口标志但不工作。基本上我希望我的线程保持屏幕开启两秒钟,然后清除屏幕上的标志。

这是我的代码:

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();
        }   
        }
}

【问题讨论】:

  • 我将 connectionUnAbort 变量设置为 true ,初始化时间变量然后启动线程..

标签: android multithreading layoutparams android-windowmanager


【解决方案1】:

我在研究后解决了它,我发布了引用的链接。

Answer Link

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

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);
                }
            });

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多