如何触发一种方法,如果用户不点击 Button 在 Android 后的延迟time

发布时间: 2016/9/26 5:07:39
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在做 android application 在其 layout ,我有 4 个按钮

<Button
    style="@style/Tile"
    android:id="@+id/button1"
    android:onClick="b1"/>

<Button
    style="@style/Tile"
    android:id="@+id/button2"
    android:onClick="b2"/>

<Button
    style="@style/Tile"
    android:id="@+id/button3"
    android:onClick="b3"/>

<Button
    style="@style/Tile"
    android:id="@+id/button4"
    android:onClick="b4"/>

我想要触发的方法,如果用户不与他们交互在 20 秒内,也如果用户进行交互的方法将有所不同。 你能帮我解决这个问题,或引导我在哪里走应该寻找解决方案。

解决方法 1:

定义 Runnable 。这将得到执行,如果 Button 不会在 20 秒内点击︰

final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // do something
        aMethod();
    }
};

创建 Handler 前后 Runnable 与 20 秒钟的延迟︰

final Handler handler = new Handler();
handler.postDelayed(runnable, 20000);

如果 Button 获取单击,叫 removeCallbacks()Handler 实例,这将有效地删除挂起 RunnableHandler 的消息队列︰

Button button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        handler.removeCallbacks(runnable);
        // do your Button stuff
        anotherMethod();
    }
});
官方微信
官方QQ群
31647020