`

使用ScheduledExecutorService延时关闭一个全屏的对话框

阅读更多
自定义style,设置全屏属性
<resources>  
  
    <style name="AppTheme" parent="android:Theme.Black"/>  
    <style name="processDialog" >  
        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->   
        <item name="android:windowFullscreen">true</item>    
        <item name="android:windowIsTranslucent">false</item><!--半透明-->    
        <item name="android:windowNoTitle">true</item><!--无标题-->    
        <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->    
        <item name="android:backgroundDimEnabled">true</item><!--模糊-->    
        <item name="android:backgroundDimAmount">0.5</item>   
        <item name="android:alpha">0.3</item>   
    </style>    
  
</resources>  

代码中加载这个view并把view set到dialog上,这样全屏的dialog就完成了
mView = LayoutInflater.from(this).inflate(R.layout.process_dialog, null);  
processDialog = new Dialog(context, R.style.processDialog);  
processDialog.setCancelable(false);
processDialog.setContentView(mView);  
mAutoCloseDialog = new AutoCloseDialog(processDialog);
mAutoCloseDialog.show(Prefs.DIALOG_DISPLAY_TIME);


接下来用一个封装好的类,做一个延时关闭的效果
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.app.Dialog;

public class AutoCloseDialog{  
    
    private Dialog dialog;  
    private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();  
      
    public AutoCloseDialog(Dialog dialog){  
        this.dialog = dialog;  
    }  
      
    public void show(long duration){  
    	
        Runnable runner = new Runnable() {  
            public void run() {  
                dialog.dismiss();  
            }  
        };  
        executor.schedule(runner, duration, TimeUnit.MILLISECONDS);
        dialog.show();
    }  
      
} 


其他用法示例:
Here is a class with a method that sets up a ScheduledExecutorService to beep every ten seconds for an hour:
import static java.util.concurrent.TimeUnit.*;
 class BeeperControl {
    private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {
        final Runnable beeper = new Runnable() {
                public void run() { System.out.println("beep"); }
            };
        final ScheduledFuture<?> beeperHandle =
            scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
        scheduler.schedule(new Runnable() {
                public void run() { beeperHandle.cancel(true); }
            }, 60 * 60, SECONDS);
    }
 }


ScheduledExecutorService执行周期性或定时任务
分享到:
评论

相关推荐

    ScheduledExecutorService任务定时代码示例

    在上面的示例代码中,我们使用了 Executors.newSingleThreadScheduledExecutor() 方法来创建一个 ScheduledExecutorService 实例。这个方法创建了一个单线程的cheduledExecutorService,用于执行定时任务。 ...

    ScheduledExecutorService 计时器任务处理

    ScheduledExecutorService是Java并发编程中一个非常重要的工具类,它属于ExecutorService接口的一个实现,主要用于执行定时或周期性的任务。这个服务提供了强大的定时任务管理能力,可以用来安排在未来某一时刻或者...

    ScheduledExecutorService

    定时器小例子,这是一个经较好定时器应用

    java实现一个小程序语句的延迟执行的小demo

    下面是一个简单的使用`ScheduledExecutorService`实现延迟执行的Java代码示例: ```java import java.util.concurrent.*; public class DelayExecutionDemo { public static void main(String[] args) { // 创建...

    android splash 延时实现

    在SplashActivity中,我们可以创建一个Handler,然后在创建Handler的Message中设置延时。当延时结束后,Handler的handleMessage()方法会被调用,从而跳转到主Activity。 ```java new Handler().postDelayed(new ...

    自定义Java-ScheduledExecutorService定时器.jar

    这是一个jar,很秀。自定义的一个Java定时器工具类。主要是结合Spring Boot一起使用,并在Spring Boot启动的时候一起启动运行。

    一口气说出Java 6种延时队列的实现方法(面试官也得服)

    DelayQueue 是一个 BlockingQueue,无界阻塞队列,内部使用的是 PriorityQueue,PriorityQueue 使用完全二叉堆来实现队列元素排序。在向 DelayQueue 队列中添加元素时,会给元素一个 Delay(延迟时间)作为排序条件...

    SendCodeButton 延时点击操作

    "SendCodeButton 延时点击操作...总之,"SendCodeButton 延时点击操作"是软件开发中的一个重要环节,它涉及到用户交互、系统安全和性能优化等多个方面。理解和掌握这一技术对于提高应用程序的质量和用户体验至关重要。

    android 延时或重复执行任务

    `Timer`类是Java提供的一个计时器类,可以用来调度任务在未来某个时间点执行或者周期性地执行。`TimerTask`是实际的任务载体,它继承自`Runnable`。创建`Timer`对象后,通过`schedule(TimerTask task, long delay)`...

    基于ScheduledExecutorService的两种方法(详解)

    下面是一个使用scheduleAtFixedRate方法的示例代码: ```java import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Executors; import java.util.concurrent....

    Java并发Timer源码分析

    Java并发编程是Java编程中一个非常重要的方面,java.util.Timer是Java中的一个基本组件,用于实现延时和周期性任务的执行。但是,Timer存在一些缺陷,如创建唯一的线程来执行所有Timer任务,如果一个timer任务的执行...

    Java 两种延时thread和timer详解及实例代码

    在Java编程中,有时我们需要实现程序的延时执行,以便在特定时间点执行某些操作或者在执行完一个任务后等待一段时间再进行下一个任务。本文将详细介绍Java中的两种延时方式:Thread.sleep() 和 Timer 类,并提供相关...

    android-fixedtimes-ScheduledExecutorService:具有指定执行时间的ScheduledExecutorService

    您可以在工作线程上运行任务(Runnable或Callable),以指定执行计划(如ScheduledExecutorService),并指定执行时间。 介面 ScheduledFuture&lt;?&gt; schedule( Runnable command, int executeTime, long delay,...

    DelayQueue延迟队列和Redis缓存实现订单自动取消功能

    4. 开启一个后台线程或使用ScheduledExecutorService定期检查DelayQueue。当DelayQueue中有可处理的订单时,从Redis中删除对应的键(即订单),并执行取消订单的业务逻辑。 5. 为了防止Redis中的订单过期但...

    使用Kotlin+RocketMQ实现延时消息的示例代码

    延时消息是指消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 使用延时消息的典型场景,例如: 在电商系统中,用户下完订单30分钟内没支付,则订单可能会被取消...

    Springmvc java注解设置定时任务实例

    `ScheduledExecutorService`是Java并发包`java.util.concurrent`中的一个接口,它提供了延迟执行和周期性执行任务的能力。 首先,我们需要在Spring配置类中配置一个`TaskScheduler`,这是Spring提供的一个接口,...

    dialog 弹窗-倒计时

    在压缩包中的`DialogCountDownTimer`可能是一个示例代码或者库,它提供了预封装的倒计时对话框功能。如果这是一个Java库,它可能包含了一个`Dialog`类的扩展,带有倒计时属性和相关的方法。如果是Android项目,它...

    JAVA中定时器的使用

    例如,在上面的代码中,我们使用 scheduleAtFixedRate 方法来安排一个任务,在 2005/12/30 14:10:00 开始执行,每隔 3 分钟执行一次。如果我们在 14:17:00 执行这个程序,那么会立刻打印 3 次 "this is task you do6...

    Java写一个日程提醒程序.rar

    在Java编程领域,创建一个日程提醒程序是一个常见的任务,它可以帮助用户管理日常生活中的各种事件和待办事项。本项目提供了完整的源代码,允许用户进行新建、查看、修改、删除和过滤日程信息,以及设置个性化提醒。...

    一个轮询的java案例

    标题中的“一个轮询的Java案例”提示我们这个话题与编程中的轮询机制有关,而描述则提供了一个有趣的比喻,用以解释轮询的过程。在这个比喻中,20个人代表了程序中的多个参与者,3包降落伞相当于有限的资源,每数到...

Global site tag (gtag.js) - Google Analytics