android - Android 中的时间延迟

标签 android multithreading time sleep delay

所以我想在我的应用中创建一个“频闪”灯光效果。

为此,我需要一个时间延迟,其中一个为 100 毫秒,另一个为 20 毫秒。

这是我正在使用的代码。

Thread timer = new Thread();
    long longTime = 100;
    long shortTime = 20;
    for (int x = 0; x < 2000000; x++)
    {
        layout.setBackgroundColor(background);
        try {
            timer.sleep(longTime);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        layout.setBackgroundColor(backgroundBlack);
        try {
            timer.sleep(shortTime);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

我遇到的问题是,当我单击按钮调用该代码时,没有任何反应。所以我做了一些调试,我很确定这是计时调用。我以前从未用 Java 编程过,所以我不确定如何调用线程休眠。

最佳答案

您可以使用如下所示的处理程序来实现此目的。

public class Strobe extends Activity {

    private LinearLayout mLinearLayout;

    private Handler mHander = new Handler();

    private boolean mActive = false;
    private boolean mSwap = true;   

    private final Runnable mRunnable = new Runnable() {

        public void run() {         
            if (mActive) {
                if (mSwap) {                    
                    mLinearLayout.setBackgroundColor(Color.WHITE);
                    mSwap = false;
                    mHander.postDelayed(mRunnable, 20);
                } else {
                    mLinearLayout.setBackgroundColor(Color.BLACK);
                    mSwap = true;
                    mHander.postDelayed(mRunnable, 100);
                }
            }           
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mLinearLayout = (LinearLayout) findViewById(R.id.strobe);
        startStrobe();
    }

    private void startStrobe() {        
        mActive = true;
        mHander.post(mRunnable);
    }
}

为 Activity 设置主题以使其全屏显示。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

关于android - Android 中的时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479880/

相关文章:

java - Android中是否有波斯(Shamsi或Jalali)日历的库或算法?

ios - 当我的 UITableViewCell 不再可见时,如何取消对象中的 NSOperation?

c - 我怎么知道 linux 系统调用是否线程安全?

javascript - 为什么我无法增加计时器值?

java - 从 php -> java 解析包含多个数组的 json 数组

android - React Native 禁用 console.warn 应用屏幕底部的黄色框

android - 如何创建 ImageButtons 并根据变量将参数链接到它?

c# - BackgroundWorker.RunWorkerCompleted 和线程

java - 获取 24 小时制的当前时间和日期

Android 在 3 小时后设置通知