android - 循环中的计数器

标签 android

如何在Activity中做sample counter?这是行不通的。

public class MainActivity extends AppCompatActivity implements Runnable {

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

        run();
    }

    @Override
    public void run() {
        while (true) {
            updateTv();

            try {
                Thread.sleep(17);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public void updateTv() {
        int counter = 100;
        final TextView tv = (TextView) findViewById(R.id.tv);
        tv.setText(String.valueOf(counter));
        counter--;
    }
}

最佳答案

onCreate() 中,您将在 UI 线程内启动一个无限循环,将其完全阻塞。或者你可以使用 Handler定期更新。也许使用更大的延迟并在某个时候停止它。

public class MainActivity extends AppCompatActivity implements Runnable {
    private final Handler mHandler = new Handler();

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

        run();
    }

    @Override
    public void run() {
        updateTv();
        mHandler.postDelayed(this, 17);
    }

    public void updateTv() {
        int counter = 100;
        final TextView tv = (TextView) findViewById(R.id.tv);
        tv.setText(String.valueOf(counter));
        counter--;
    }
}

无论如何你应该阅读What is the Android UiThread (UI thread)当然。

关于android - 循环中的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099072/

相关文章:

android - 带图标的水平进度条

android - 如何在android中设置美国格式的电话号码?

android - 自动化 Java 到 Kotlin 的转换 : unresolved reference to 'ARG_LAYOUT_RES_ID'

android - 从不更新的对话框中删除 RecyclerView 项目

java - 完成另一个类(class)的 Activity

java - 如何检查 fragment 在 Activity OnBackpressed 中是否可见

android - 如何通过小部件按钮触发某些内容?

java - 导出和导入 SQLite 数据库

浏览器中的 Android 模拟器

java - 在 Android (java) 上解析 json 时出错