在安卓系统中设置延迟

3
我想在我的应用程序中展示1到9的数字作为计数器。
TextView te = (TextView)findViewById(R.id.text);
for(int i=1; i<=9; i++){ try{ te.setText("Number" + i); Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } }
但这段代码并没有达到我想要的效果,我该怎么做呢?
谢谢。

但这并不是我想要的。请问您想要什么? - Sankar V
为什么你不能使用倒计时器来实现这个? - vinoth
我想在屏幕上依次显示数字1到10的计数。 - Tikitaka
4个回答

10

永远不要在UI线程上延迟操作。相反,使用Handler和它的postDelayed方法在规律的时间间隔内执行操作。例如:

//define 'int i = 10;' at global level
final Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        te.setText("Number"+i);
        i--;
        handler.postDelayed(this, 1000);
    }
});

1
您可以尝试类似于这样的代码:

import android.os.Bundle;
import android.view.MotionEvent;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;

public class SplashScreen extends Activity {

    protected int _splashTime = 5000;
    private Thread splashTread;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    startActivity(new Intent(SplashScreen.this,
                            Home.class));
                    finish();
                }
            }
        };
        splashTread.start();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            synchronized(splashTread)
            {
                    splashTread.notifyAll();
            }
        }
        return true;
    }
}

进行必要的更改以使您的事物完美运作。 这只是一个例子。


0

如果在显示计数器时不需要用户交互,你所做的就可以了,只要确保它们在 UI 线程上运行即可。这可以通过将其放入 runOnUiThread 或创建一个 Handler,然后使用 postMessage 来实现。

如果在计数器增加期间需要用户交互,你可以创建一个 Handler,然后调用 postDelayed


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接