如果未触摸(非活动)30分钟,如何自动注销Android应用程序?

时间:2016-11-30 12:04:25

标签: android eclipse

我正在开发一个Android应用程序。我只是想要,如果我不触摸(InActive)我的应用程序30分钟,它会自动注销。我有活动并将两个文件分段。我已经google了很多并且实现了许多代码,但没有人解决。所以请允许我一个代码可以做到这一点。并请明确说明我需要实现哪些活动和片段。我将非常感谢你。请尽快回复尽可能。

1 个答案:

答案 0 :(得分:0)

您可以使用Handler

来实现此目的
public class MainActivity extends AppCompatActivity{
  private Handler refreshHandler;
  private Runnable runnable;

 @Override
   public void onCreate(Bundle savedInstanceState) {
      refreshHandler = new Handler();
      runnable = new Runnable() {
         @Override
            public void run() {
            // logout
            }
      };
      refreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);
   }

 @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        refreshHandler.removeCallbacksAndMessages(null);
        refreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);
    }
 }

以上是30分钟后注销。现在,您需要收听TouchEvents或其他任何您想要确保用户处于活动状态的内容。如果用户处于活动状态,请删除等待运行的Runnable

refreshHandler.removeCallbacksAndMessages(null);

然后再次启动它

refreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);

总有一种更好,更优雅的方法来解决它,但这将是一种快速的方法。

修改:我通过onUserInteraction()

添加了该选项
  

每当将key,touch或trackball事件分派给活动时调用。如果您希望知道用户在您的活动运行时以某种方式与设备进行了交互,请实施此方法。此回调和onUserLeaveHint()旨在帮助活动智能地管理状态栏通知;特别是,帮助活动确定取消通知的适当时间。

     

对您的活动的onUserLeaveHint()回调的所有调用都伴随着对onUserInteraction()的调用。这可确保您的活动将被告知相关的用户活动,例如拉下通知窗格并触摸那里的项目。

     

请注意,此调用将针对开始触摸手势的触碰操作调用,但可能不会针对随后的触摸移动和触摸操作调用。

docs