Android - 每 5 秒循环部分代码

2024-01-01

我想当我按下“开始”按钮时开始每 5 秒重复两行代码,并在按下“停止”按钮时结束它。我正在尝试使用 TimerTask 和 Handles,但不知道如何实现。

public class MainActivity extends Activity {




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


           //final int i;
           final TextView textView = (TextView) findViewById(R.id.textView);
           final Button START_STOP = (Button) findViewById(R.id.START_STOP);
           final ImageView random_note = (ImageView) findViewById(R.id.random_note);
           final int min = 0;
           final int max = 2;
           final Integer[] image = { R.drawable.a0, R.drawable.a1,R.drawable.a2 };



        START_STOP.setTag(1);
        START_STOP.setText("START");


        START_STOP.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
            int status = (Integer) v.getTag();
            if (status ==1) {
                textView.setText("Hello");
                START_STOP.setText("STOP");
                v.setTag(0);

                final Random random = new Random();

                                //************************************************************
                // I would like to loop next 2 lines of code every 5 seconds.//

                                int i = random.nextInt(2 - 0 + 1) + 0;
                random_note.setImageResource(image[i]);

                //************************************************************
                    }

            else
            {
                textView.setText("Bye");
                START_STOP.setText("Let's PLAY!");
                v.setTag(1);
            }


            }
        });     

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


}

像其他答案之一一样使用 CountDownTimer 是一种方法。另一种方法是使用 Handler 和延迟后 http://developer.android.com/reference/android/os/Handler.html#postDelayed%28java.lang.Runnable,%20long%29 method:

private boolean started = false;
private Handler handler = new Handler();

private Runnable runnable = new Runnable() {        
    @Override
    public void run() {
        final Random random = new Random();
        int i = random.nextInt(2 - 0 + 1) + 0;
        random_note.setImageResource(image[i]);
        if(started) {
            start();
        }
    }
};

public void stop() {
    started = false;
    handler.removeCallbacks(runnable);
}

public void start() {
    started = true;
    handler.postDelayed(runnable, 2000);        
}

这是使用 Timer 和 TimerTask 的示例:

private Timer timer;
private TimerTask timerTask = new TimerTask() {

    @Override
    public void run() {
        final Random random = new Random();
        int i = random.nextInt(2 - 0 + 1) + 0;
        random_note.setImageResource(image[i]);
    }
};

public void start() {
    if(timer != null) {
        return;
    }
    timer = new Timer();
    timer.scheduleAtFixedRate(timerTask, 0, 2000);
}

public void stop() {
    timer.cancel();
    timer = null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 每 5 秒循环部分代码 的相关文章

  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • jQuery / Ajax:如何循环遍历数组作为 Ajax 成功函数的一部分

    我有一个阿贾克斯调用返回一个数组并需要对该数组中的每个值执行某些操作 到目前为止 我有以下内容 但这会返回以下错误 Uncaught TypeError Cannot use in operator to search for length
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ

随机推荐

  • Xcode 构建设置中的“架构”和“有效架构”有什么区别?

    它们的含义是什么 我可以将它们设置为不同的值吗 架构是您想要构建的架构 有效的架构是您可以设想使用代码库构建的架构 因此 也许您只想为armv7s构建二进制文件 但相同的源代码可以很好地编译为armv7和armv6 所以VALID ARCH
  • 取消订阅 Firebase 实时数据库

    我的 Ionic 应用程序中有一个聊天系统 显示在模式窗口中 在模式窗口中我有下面的代码 使用一段时间后 似乎该应用程序变得有点迟缓 我怀疑这是因为当我关闭模式窗口时我应该取消订阅 Firebase 换句话说 每次我单击按钮打开模式时 似乎
  • 如何使“winston”日志库像“console.log”一样工作?

    The winston https github com winstonjs winston图书馆非常适合交通和灵活性 我想使用它来允许配置级别并重定向到文件 但想重现 console log 行为以进行格式化 但遇到了麻烦 这是我到目前为
  • 进行了无法编译的编辑。在VS2019中使用Resharper时

    我有一个使用 Net Core 2 1 的多项目解决方案 使用 VS2019 16 3 9 和 Resharper 2019 23 构建 192 0 20191016 60459 如果我尝试在调试中运行测试 它将运行一次正常 第二次运行时我
  • 随机存取图像(图片)文件

    是否有一种文件格式 图像文件 允许随机访问其部分 例如 我有分辨率为 100000x100000 像素的巨大图像文件 我只想读取一小部分 就像具有缩放级别的地理地图一样 我想用 Java 写一些应用程序 我可以使用数百个小文件并以某种方式组
  • 为什么 Clojure 映射解构看起来是相反的?

    对我来说 解构地图看起来是相反的 有人能解释发生了什么事吗 我希望这是解构地图的正确形式 gt 让 a a b b a 1 b 2 a b 返回Exception Unsupported binding form a clojure cor
  • org.hibernate.sql.ast.SqlTreeCreationException:无法找到TableGroup - model.dao.User(1055362627602899)

    我有一个 spring boot 2 7 5 和 hibernate 5 6 12 项目 我想升级到 spring boot 3 1 0 和 hibernate 6 6 2 我正在尝试数据库中的查询计数以获取数据库中的记录总数 我收到错误
  • 如何制作 gitlab 变更日志条目?

    我真的真的不明白 gitlab 文档 我想了解如何创建一个该死的变更日志条目 我有一个changelog md 文件 这里是关于此的 gitlab 文档 https docs gitlab com ce development change
  • Tkinter 网格几何管理器尺寸传播(带粘性)

    我遗漏了一些关于 Tk 中大小如何传播的信息 尝试这个 from Tkinter import root Tk frame1 Frame root border 4 relief RIDGE frame1 grid sticky E W f
  • 如何使用 WCF 服务?

    当我创建一个新的 WCF 服务时 我可以创建一个如下所示的新方法 OperationContract WebInvoke Method GET UriTemplate TryThis ResponseFormat WebMessageFor
  • 椭圆曲线点压缩算法

    我正在使用 Javascript 生成椭圆曲线 以便在基于此示例代码的加密消息传递应用程序中使用http www cs students stanford edu tjw jsbn ecdh html http www cs student
  • 一次性绘制多个独立地块

    使用ggplot2 qplot carat price data diamonds facet grid cut color clarity 不完全是我所希望的 除了按清晰度级别生成单独的绘图网格之外 如何才能完成这样的事情 例如 qplo
  • ld:安装 mysql2 gem 时未找到 -lssl 的库

    我在项目的 Gemfile 中更改了 mysql2 版本0 3 20 to 0 5 2 当我跑步时bundle update mysql2我收到以下错误 Fetching mysql2 0 5 2 was 0 3 21 Installing
  • karma + jasmine + webpack:模块不是函数

    由于此错误 我无法实例化控制器 它说 模块不是函数 模块应该做的是成为 angular mock 的别名 但我的问题是 难道模块被重写了 但模块是来自 webpack 的 模块 导出 这是我的karma config js file glo
  • 我是否在这个通用的 unique_ptr<>() 删除器中正确使用了指针类?

    我创建了一个通用删除器模板 可用于创建unique ptr lt gt 子类型允许Deleter不仅仅是delete ptr 它与默认优化标志 即 O0 但是 当我使用 O3 the T operator 函数以某种方式返回0而不是f po
  • 如何在 git 的提交之间前进和后退?

    我正在做一个git bisect在到达有问题的提交后 我现在正尝试向前 向后迈出一步 以确保我处于正确的位置 我知道HEAD 回顾历史 但是还有另一个捷径可以让我前进 朝着未来的特定提交 如下所示 A B C HEAD D E F 我知道我
  • 在 Java 中将数据从 HashSet 移动到 ArrayList

    我有以下内容Set在爪哇中 Set lt Set
  • Google App Script Web App 上的并发点击或同时执行的数量是否有限制

    我正在编写一个应用程序脚本 用于处理电子邮件 任务和日历事件 并希望将其部署为网络应用程序 该应用程序将在运行它的用户的上下文中运行 该应用程序将被超过 10k 的用户使用 甚至可能更多 在将其分发给用户之前 我想知道网络应用程序可以拥有的
  • 从 Firebase 获取孩子的名字?

    如果我有类似的东西 child name value 我怎样才能得到孩子的名字 我知道它可以得到这个值 但是另一个呢 在这种情况下 子名称是该值的 KEY 因此 请使用引用对象并对其调用 getKey String name ref get
  • Android - 每 5 秒循环部分代码

    我想当我按下 开始 按钮时开始每 5 秒重复两行代码 并在按下 停止 按钮时结束它 我正在尝试使用 TimerTask 和 Handles 但不知道如何实现 public class MainActivity extends Activit