【问题标题】:Automatically finish an app / or auto-destroy app posible in Android?自动完成 Android 中可能的应用程序/或自动销毁应用程序?
【发布时间】:2011-03-10 22:44:59
【问题描述】:

两个问题: 1)我想在我的应用程序中添加几分钟不活动后自动注销的选项。我所说的自动注销是指应用程序将在几分钟不活动后返回到第一个活动(初始状态)。我的第一个活动是登录表单,之后用户对另一个活动有不同的选择。

我不知道如何自动注销。我正在寻找建议...

2) 如果可以制作自动销毁应用程序。假设有人偷了我的手机,我发送短信或其他东西,手机识别并自动卸载应用程序。这可能吗?

【问题讨论】:

    标签: android eclipse


    【解决方案1】:

    Timer to schedule some task in the future

    我不知道您是否可以删除自己,但这里有一个如何删除应用程序的链接。 Deleting applications

    考虑只删除应用中的数据而不是整个应用。

    您可能想register a IntentReceiver 并查找特殊短信

    【讨论】:

      【解决方案2】:

      1) 您可以设置一个计时器,当用户与应用交互时,您可以取消它,在交互后您再次启动它。然后,当计时器到期时,您使用 FLAG_ACTIVITY_CLEAR_TOP 标志启动登录活动,并使用 Intent 标志,此标志将完成任务中所有在根登录活动之上的活动。

      2) 您可以为 SMS 设置一个意图过滤器,当所需的 SMS 到达时,您可以禁用该应用程序以使其无法启动,请查看this 问题以进行此操作。

      【讨论】:

      • 您如何知道用户在任何活动中与应用程序交互?我认为我不应该打电话取消每个按钮监听器中的计时器......
      • 你只需要重写Activity dispatchTouchEvent (developer.android.com/reference/android/app/…) 并在那里实现逻辑。
      • 所以,这意味着您在扩展活动的初始类中重写 dispatchTouchEvent 并编写类似于@rgmills 给出的代码?
      • 我没有做对,因为我遇到了以下错误:E/AndroidRuntime: java.lang.IllegalStateException: TimerTask 已经安排好了。似乎代码总是先于 TimeTask 输入。知道为什么吗?
      【解决方案3】:

      这是一个使用 Timer 的 sn-p:

          Timer timeoutTimer;
          int INTERVAL = 300000; //5 minute interval
      
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              timeoutTimer = new Timer();
              TimerTask timeoutTask = new TimerTask() {
                  @Override
                  public void run() {
                      finish();
                  }
              }
          //anything else you want to do onCreate
          }
      
      void setTimer() {
          t.schedule(timeoutTask, Calendar.getInstance().getTime(), INTERVAL);
      }
      
      void resetTimer() {
          timeoutTask.cancel();
          setTimer();
      }
      
      void someMethodTriggeredByUserAction() {
          //do some work?
          resetTimer();
      }
      

      【讨论】:

      • 我很困惑这段代码可以在哪里实现?我的意思是我有主要活动(登录活动)和许多其他活动。如果用户在 x 活动中并且在那里并且什么都不做,我想要自动注销。我了解您的 sn-p 的想法,但不了解我在哪里编码?
      • 有几处错误或缺失。如果您在 oncreate 方法中创建 timeoutTask,您将无法在 setTimer() 和 resetTimer() 中访问它。此外,您永远不会调用 setTimer 来设置代码的时间。我遵循你的想法,但是当我实现它时,我得到了几个或运行时错误。
      猜你喜欢
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 2011-07-27
      • 2019-04-01
      • 1970-01-01
      相关资源
      最近更新 更多