如何延迟onClick(Android)[重复]

Posted

技术标签:

【中文标题】如何延迟onClick(Android)[重复]【英文标题】:How to delay onClick (Android) [duplicate] 【发布时间】:2016-05-17 04:03:24 【问题描述】:

对不起,我是 android java 的新手。请阅读下面代码中的注释标签“//”,当我点击我的按钮时,发送邮件和卸载同时进行,如何延迟?

@Override
    public void onClick(View v) 
        // execute send mail first
        sendEmail();
        // delayed 30 second then execute this uninstall.
        Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

            Intent uninstallIntent =
              new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
        startActivity(uninstallIntent);
    

【问题讨论】:

【参考方案1】:

使用 postDelayed():

@Override public void onClick(View v) 
        // execute send mail first
        sendEmail();
        v.postDelayed(new Runnable() 
            @Override
            public void run() 
                Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

                Intent uninstallIntent =
                    new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
                    startActivity(uninstallIntent);
            
         , 30000L);
    

【讨论】:

谢谢,喜欢这个方法:v【参考方案2】:

您可以使用处理程序将方法延迟所需的时间。方法如下:

Handler handler = new Handler();
        handler.postDelayed(new Runnable() 
            @Override
            public void run() 
                //Your method to be executed after the delay.
            
        , 1000); //1000 is the time in milliseconds( 1 sec) to wait.

【讨论】:

【参考方案3】:

你可以这样做:

@Override
    public void onClick(View v) 
        // execute send mail first
        sendEmail();
        Thread.sleep(30000L);// delayed 30 second then execute this uninstall.
        Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

            Intent uninstallIntent =
              new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
        startActivity(uninstallIntent);
    

但是睡眠线程不是一个好的开发实现,相反你可以重构一些模块并等待一些回调或通知。

【讨论】:

这里的问题不在于延迟本身,而是延迟发生在主 UI 线程上应用挂起。

以上是关于如何延迟onClick(Android)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android 样式来控制视图的 onClick 行为 [重复]

在android中使用媒体播放器时如何避免音频剪辑重复之前的延迟

链接按钮重复单击

如何延迟 onClick 图像链接,以便 .gif 动画可以在页面切换之前完成?

Android O 地理围栏触发延迟

Android - 禁用 ListView 选择突出显示但保持启用 OnClick [重复]