在Android中重复任务

not*_*ook 1 android

我尝试定期切换屏幕亮度低和高(1s),我认为这段代码应该工作:

SystemClock.sleep(1000);
params.screenBrightness = 0;
getWindow().setAttributes(params);


SystemClock.sleep(1000);
params.screenBrightness = 1;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这些代码,但它只完成了第二个代码(如果扩展代码,则完成最后一个代码)(即亮度= 1).因为我对此表示怀疑所以我把一个变量int i = 0,然后在每个sleep函数之后输入i ++,它显示我毕竟i = 2(通过显示字符串).我认为Android完成了总和,但我的屏幕只是对最后一个设置做出反应,而不是中间命令.你知道为什么会这样,我怎么能切换屏幕亮度?

我也尝试使用"for"循环,但没有运气.

希望尽快收到您的意见.

干杯,

Sam*_*Sam 5

我不确定你为什么要每隔一秒亮一下你的屏幕变暗......但如果你想延迟运行代码考虑使用Handler和Runnable:

import android.view.WindowManager.LayoutParams;
public class Example extends Activity {
    private LayoutParams mAttributes;
    private Handler mHandler = new Handler();
    private Window mWindow;

    private Runnable onEverySecond = new Runnable() {
        public void run() {
            if(mAttributes.screenBrightness != LayoutParams.BRIGHTNESS_OVERRIDE_FULL)
                mAttributes.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
            else
                mAttributes.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_OFF;

            mWindow.setAttributes(mAttributes);
            mHandler.postDelayed(onEverySecond, 1000);
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWindow = getWindow();
        mAttributes = mWindow.getAttributes();

        mHandler.post(onEverySecond);
    }
}
Run Code Online (Sandbox Code Playgroud)