【问题标题】:Android how to kill process when home button pressed [duplicate]按下主页按钮时Android如何杀死进程[重复]
【发布时间】:2017-08-31 20:57:07
【问题描述】:

好的,基本上,我希望能够强制我的用户在每次重新启动应用程序时执行第一个活动,以便它检查更新。由于更高版本的 android 阻止我覆盖主页按钮,我依靠调用 onStop 方法来强制进程自行终止,在再次打开应用程序时强制重新加载。

问题是,如果不调用 onStop 方法,我现在无法转换到新活动。有没有其他方法可以做到这一点,或者防止 onStop 方法在活动转换时被调用?

【问题讨论】:

  • 你应该重新考虑你的应用逻辑。 “强迫我的用户”确实是个坏主意。为什么不在某个后台线程甚至更好的...服务中检查您的更新?
  • 你甚至不应该考虑这个。您不必担心用户只会将您的应用置于后台,因此打开它不会检查更新。为什么?因为放在后台的应用程序不会长时间运行。 Android 操作系统会杀死它。因此,当用户打开它时,将进行更新检查。相对于您可能进行的更新次数,它最多会在后台停留很短的时间,所以它是微不足道的。

标签: java android


【解决方案1】:

我会不惜一切代价避免与Activity Lifecycle 混淆。此外,如果您希望您的应用每次都从第一个 Activity 开始,这与 Android 用户习惯的做法是有悖常理的……这可能会导致您的负面 cmets 比预期的要多。

如果您只需要“检查更新”,为什么不在您的所有活动中使用onResume()(希望您已经在您的应用程序中使用了某种BaseActivity)其他人扩展,所以添加它只需 2 行代码)?如果您需要更新,而不仅仅是从那里将它们重定向到更新界面(或执行您决定的任何操作)。

【讨论】:

  • 澄清一下,这不是一个公共应用程序。它供仓库工人在内部使用。我们基本上是在试图避免他们无限期地打开手机而应用程序无限期地坐在后台的情况。
  • 看看这个页面 - 无法想象现在是使用 Android for Work API 的更好时机:developer.android.com/training/enterprise/index.html。如果您认为将这些用于您的应用程序是过大的,我会退回到依靠在 onResume() 中进行任何检查......然后您可以轻松地重定向/关闭/任何需要的东西:)
  • 不幸的是,onResume() 在首次创建活动时被调用。但是,我能够利用 onRestart() 方法。谢谢。
【解决方案2】:

如果你愿意,你可以抓住按下的后退按钮。

例如,您可以启动Intent

@Override
public void onBackPressed() {    
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
}

【讨论】:

  • 如果你愿意,你可以抓住后退按钮按下 -> 不,这不是问的,它没有相同的效果,仔细阅读问题,我们说的是主页按钮,而不是返回按钮。
  • 谢谢,但我已经抓住了返回按钮。
  • 对不起,我不明白。 HomeWatcher 将工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2019-08-14
相关资源
最近更新 更多