Android 由于用户不活动,如何在15分钟后获得自动注销表单活动?

Android 由于用户不活动,如何在15分钟后获得自动注销表单活动?,android,Android,这是我的密码 public class LogoutService extends Service { public static CountDownTimer timer; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); timer = new CountDownTimer(1 * 60 * 1

这是我的密码

public class LogoutService extends Service {
    public static CountDownTimer timer;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        timer = new CountDownTimer(1 * 60 * 1000, 1000) {
            public void onTick(long millisUntilFinished) {
                //Some code
                Log.v("Timer::", "Service Started");
            }

            public void onFinish() {
                Log.v("Timer::", "Call Logout by Service");
                // Code for Logout
                stopSelf();
            }
        };
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
}

您可以使用默认方法查找用户交互:

@Override public void onUserInteraction() {
 super.onUserInteraction(); 
}
使用此方法检查用户交互,如果在您的时间限制后没有发现交互,请调用注销方法


您可以使用

查找更多信息您可以使用默认方法查找用户交互:

@Override public void onUserInteraction() {
 super.onUserInteraction(); 
}
使用此方法检查用户交互,如果在您的时间限制后没有发现交互,请调用注销方法


您可以使用创建需要由所有活动扩展的BaseActivity类来查找更多信息

public class MyBaseActivity extends Activity {

    public static final long DISCONNECT_TIMEOUT = 900000; // 15 min = 15 * 60 * 1000 ms

    private Handler disconnectHandler = new Handler(){
        public void handleMessage(Message msg) {
        }
    };

    private Runnable disconnectCallback = new Runnable() {
        @Override
        public void run() {
            // Perform any required operation on disconnect  

           // Logout from app
        }
    };

    public void resetDisconnectTimer(){
        disconnectHandler.removeCallbacks(disconnectCallback);
        disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
    }

    public void stopDisconnectTimer(){
        disconnectHandler.removeCallbacks(disconnectCallback);
    }

    @Override
    public void onUserInteraction(){
        resetDisconnectTimer();
    }

    @Override
    public void onResume() {
        super.onResume();
        resetDisconnectTimer();
    }

    @Override
    public void onStop() {
        super.onStop();
        stopDisconnectTimer();
    }
}
从另一方面来说,这也会起作用

public class MyBaseActivity extends Activity {

   public static final int IDLE_DELAY_MINUTES = 15; // 15 min 
        @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        delayedIdle(IDLE_DELAY_MINUTES);
    }

    Handler _idleHandler = new Handler();
    Runnable _idleRunnable = new Runnable() {
        @Override
        public void run() {
            //handle your IDLE state

      // Logout from app
        }
    };

    private void delayedIdle(int delayMinutes) {
        _idleHandler.removeCallbacks(_idleRunnable);
        _idleHandler.postDelayed(_idleRunnable, (delayMinutes * 1000 * 60));
    }

        }

创建需要由所有活动扩展的BaseActivity类

public class MyBaseActivity extends Activity {

    public static final long DISCONNECT_TIMEOUT = 900000; // 15 min = 15 * 60 * 1000 ms

    private Handler disconnectHandler = new Handler(){
        public void handleMessage(Message msg) {
        }
    };

    private Runnable disconnectCallback = new Runnable() {
        @Override
        public void run() {
            // Perform any required operation on disconnect  

           // Logout from app
        }
    };

    public void resetDisconnectTimer(){
        disconnectHandler.removeCallbacks(disconnectCallback);
        disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
    }

    public void stopDisconnectTimer(){
        disconnectHandler.removeCallbacks(disconnectCallback);
    }

    @Override
    public void onUserInteraction(){
        resetDisconnectTimer();
    }

    @Override
    public void onResume() {
        super.onResume();
        resetDisconnectTimer();
    }

    @Override
    public void onStop() {
        super.onStop();
        stopDisconnectTimer();
    }
}
从另一方面来说,这也会起作用

public class MyBaseActivity extends Activity {

   public static final int IDLE_DELAY_MINUTES = 15; // 15 min 
        @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        delayedIdle(IDLE_DELAY_MINUTES);
    }

    Handler _idleHandler = new Handler();
    Runnable _idleRunnable = new Runnable() {
        @Override
        public void run() {
            //handle your IDLE state

      // Logout from app
        }
    };

    private void delayedIdle(int delayMinutes) {
        _idleHandler.removeCallbacks(_idleRunnable);
        _idleHandler.postDelayed(_idleRunnable, (delayMinutes * 1000 * 60));
    }

        }

为此,您应该使用
处理程序
。像这样使用它

 android.os.Handler handler = new android.os.Handler(); //declear them globly
        Runnable runnable=null;
onCreate()内部初始化
Runnable
like

runnable = new Runnable() {
            @Override
            public void run() {
            finish();
            }
        };
在代码中复制这两个方法

void start() {
    handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
}
void stop(){
    handler.removeCallbacks(runnable);
}
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.util.concurrent.TimeUnit;

public class BaseActivity extends AppCompatActivity {
    private static android.os.Handler handler = new android.os.Handler();
    private static Runnable runnable = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (handler == null) {
            handler = new Handler();
        } else {
            handler.removeCallbacks(runnable);
        }
        if (runnable == null)
            runnable = new Runnable() {
                @Override
                public void run() {
              //do your task here
                }
            };
        start();
    }

    @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        stop();
        start();

    }

    void start() {
        handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
    }

    void stop() {
        handler.removeCallbacks(runnable);
    }

}
重写
onUserInteraction()
方法的
Activity
并调用
start()
stop()

在可运行初始化之后,不要忘记从
onCreate()
调用start()方法。 它的
run()
方法将在用户处于非活动状态15分钟后调用,在那里执行任务(您希望完成该
活动
或其他操作)

////=Updated=strong

将此
BaseActivity
粘贴到代码中

void start() {
    handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
}
void stop(){
    handler.removeCallbacks(runnable);
}
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.util.concurrent.TimeUnit;

public class BaseActivity extends AppCompatActivity {
    private static android.os.Handler handler = new android.os.Handler();
    private static Runnable runnable = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (handler == null) {
            handler = new Handler();
        } else {
            handler.removeCallbacks(runnable);
        }
        if (runnable == null)
            runnable = new Runnable() {
                @Override
                public void run() {
              //do your task here
                }
            };
        start();
    }

    @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        stop();
        start();

    }

    void start() {
        handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
    }

    void stop() {
        handler.removeCallbacks(runnable);
    }

}
现在扩展所有
活动的
BaseActivity
,除了
AppCompatActivity
或其他类似的活动

public class HomeActivity extends BaseActivity{
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
    }
}

您是否在
run()
方法中执行任务,我建议您启动另一个
Activity
并从
run()
方法中清除活动堆栈,因为
finish()
仅对1个
Activity
有效

您应该使用
处理程序
。像这样使用它

 android.os.Handler handler = new android.os.Handler(); //declear them globly
        Runnable runnable=null;
onCreate()内部初始化
Runnable
like

runnable = new Runnable() {
            @Override
            public void run() {
            finish();
            }
        };
在代码中复制这两个方法

void start() {
    handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
}
void stop(){
    handler.removeCallbacks(runnable);
}
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.util.concurrent.TimeUnit;

public class BaseActivity extends AppCompatActivity {
    private static android.os.Handler handler = new android.os.Handler();
    private static Runnable runnable = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (handler == null) {
            handler = new Handler();
        } else {
            handler.removeCallbacks(runnable);
        }
        if (runnable == null)
            runnable = new Runnable() {
                @Override
                public void run() {
              //do your task here
                }
            };
        start();
    }

    @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        stop();
        start();

    }

    void start() {
        handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
    }

    void stop() {
        handler.removeCallbacks(runnable);
    }

}
重写
onUserInteraction()
方法的
Activity
并调用
start()
stop()

在可运行初始化之后,不要忘记从
onCreate()
调用start()方法。 它的
run()
方法将在用户处于非活动状态15分钟后调用,在那里执行任务(您希望完成该
活动
或其他操作)

////=Updated=strong

将此
BaseActivity
粘贴到代码中

void start() {
    handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
}
void stop(){
    handler.removeCallbacks(runnable);
}
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.util.concurrent.TimeUnit;

public class BaseActivity extends AppCompatActivity {
    private static android.os.Handler handler = new android.os.Handler();
    private static Runnable runnable = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (handler == null) {
            handler = new Handler();
        } else {
            handler.removeCallbacks(runnable);
        }
        if (runnable == null)
            runnable = new Runnable() {
                @Override
                public void run() {
              //do your task here
                }
            };
        start();
    }

    @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        stop();
        start();

    }

    void start() {
        handler.postDelayed(runnable, TimeUnit.MINUTES.toMillis(15));
    }

    void stop() {
        handler.removeCallbacks(runnable);
    }

}
现在扩展所有
活动的
BaseActivity
,除了
AppCompatActivity
或其他类似的活动

public class HomeActivity extends BaseActivity{
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
    }
}


您是否在
run()
方法中执行任务,我建议您启动另一个
Activity
并从
run()
方法中清除活动堆栈,因为
finish()
仅对1个
Activity
有效

在用户登录后启动此服务,在用户登录后启动此服务15分钟后将调用onFinish()方法,onFinish()方法方法将在15分钟后调用一次。我使用您编写的两个类??任何一个都可以使用。很抱歉,您最近回复了您,您可以告诉我如何在我的活动类中使用mybaseActivity??因为您需要创建一个具有上述功能之一的基本活动。然后,对于所有其他活动,您需要使用基本活动扩展活动。它的继承你能给我推荐一些例子或github吗(我应该使用你编写的两个类吗?任何一个你都可以使用。很抱歉,最近回复了你,你能告诉我如何在我的活动类中使用mybaseActivity吗?因为你需要创建一个具有上述功能之一的基本活动。然后,对于所有其他活动,你需要用基本活动扩展你的活动。它是Inheritance你能为我推荐任何例子或github吗:(所以我调用handler my each activity??你不必从每个活动中调用它(如果你有多个活动)…创建一个BaseActivity类并在该类中扩展AppCompativity,在这里应用该代码(调用你的login activity或在run()调用时调用其他代码),,,,,,,,,请确保您的每个活动都必须扩展BaseActivity类,而不是AppCompatActivity或somthing。您可以给我举一个这样的例子:(如果这对您有效,请检查更新的答案。是的,这对其他人非常有用,感谢您共享代码@ajeet:)所以我调用我的每个活动的处理程序??您不必从每个活动中调用它(如果您有多个活动)…创建一个BaseActivity类,并在该类中创建一个活动,在此处应用该代码(在run()调用时调用您的登录活动或其他),,,,,,,,,请确保您的每个活动都必须扩展BaseActivity类,而不是AppCompatActivity或somthing。您可以给我举一个这样的例子:(如果这对您有效,请检查更新的答案。是的,这对其他人非常有用,感谢您共享代码@ajeet:)