Android 客户端登陆超时退出处理方案

本文介绍了一种在Android应用中模拟Session超时退出的方案。通过创建TimeOutService服务,设定定时任务来递减预设的时间,当时间耗尽则关闭所有活动并跳转至登录界面。同时,利用手势监听器在用户操作时重置时间,确保应用在有交互时不会过早退出。
摘要由CSDN通过智能技术生成

        在Android的客户端模拟一个类似于session超时的机制,在网上搜了好几个实现,都不怎么实用(也可能是本人是个新手,没有用对微笑),最终不得不自己做了一个方案。

        首先,创建一个TimeOutService 的服务,在 这个服务中定义一个常量,代表多长时间后退出,然后定义一个定时任务,轮询递减这个常量值

     
public class TimeOutService extends Service {

//时间耗损
private static Integer DEFAULT_VALUE = 30;

private static Integer DEFAULT_TIME_OUT = DEFAULT_VALUE;

//重置时间耗损值
public synchronized static void resetTimeOut(){
DEFAULT_TIME_OUT = DEFAULT_VALUE;
}

@Override
public void onCreate() {
super.onCreate();
Timer timer = new Timer();
timer.schedule(new TimerTask() {

@Override
public void run() {
if(DEFAULT_TIME_OUT > 0){
DEFAULT_T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中可以使用线程来实现同步接口的调用,并设置超时时间,当超时时间到达时,可以使用线程的interrupt方法来中断该线程,以达到最大超时退出的效果。 以下是一个示例代码: ```java public class SyncTask implements Runnable { private final Object lock; private final long timeout; private boolean isDone = false; public SyncTask(Object lock, long timeout) { this.lock = lock; this.timeout = timeout; } @Override public void run() { synchronized (lock) { // 进行同步操作 // ... // 标记操作完成 isDone = true; lock.notifyAll(); } } public boolean isDone() { return isDone; } public boolean waitForCompletion() { synchronized (lock) { long startTime = System.currentTimeMillis(); long elapsedTime = 0; while (!isDone && elapsedTime < timeout) { try { lock.wait(timeout - elapsedTime); } catch (InterruptedException e) { // 中断异常,退出等待 break; } elapsedTime = System.currentTimeMillis() - startTime; } return isDone; } } } ``` 在使用该同步任务时,可以创建一个线程并启动它,然后使用waitForCompletion方法来等待任务的完成,该方法会阻塞当前线程并等待超时时间或任务完成,如果超时时间到达而任务未完成,则会中断线程并返回false。 ```java Object lock = new Object(); SyncTask task = new SyncTask(lock, 10000); // 超时时间为10秒 Thread thread = new Thread(task); thread.start(); if (task.waitForCompletion()) { // 任务完成,执行后续操作 // ... } else { // 任务超时,执行超时处理 // ... } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值