我有一个应用程序,如果在后台闲置120秒,我想自行终止。例如,假设我正在使用我的应用程序,然后点击HOME键然后点击浏览器图标,当浏览器应用程序位于前台时,我的应用程序将被推送到后台。我有一个Runnable计时器,120秒后会调用:
Intent intent;
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
myActivity.startActivity(intent);
在我的myActivity类中,用于onCreate()方法我调用finish()来关闭该应用程序(如果设置了全局标志)。
这很好用,除非我在我的后台应用程序关闭时使用浏览器应用程序,浏览器应用程序被发送到后台,我只看到我的主屏幕页面。我推测这是因为我的应用程序在关闭之前会弹出前景几秒钟,这会导致浏览器应用程序被推送到后台。
我知道还有其他杀死我的工作的方法(例如,System.exit(0)),但是,当我尝试使用该方法时,如果我之后尝试再次运行我的应用程序,则会收到“强制关闭”错误消息。我也明白不建议使用System.exit()方法,因为它不会像调用finish()一样清理我的应用程序。
任何人都知道如何在后台优雅地关闭我的应用程序,而不会影响前台运行的应用程序?
感谢。
答案 0 :(得分:2)
如果计时器已过期,您可以签入onResume()
方法。如果是,您可以简单地将数据设置为emtpy并调用finish()
答案 1 :(得分:0)
当程序失去焦点时,您可以使用onPause()
方法执行任务。
http://developer.android.com/reference/android/app/Activity.html#onPause()
然后,您可以使用Timer课程在一段时间后拨打finish
。
答案 2 :(得分:0)
您的进程一直在后台运行,它不会以任何方式“停止”或“暂停”(只有UI应该处于非活动状态)。所以你可以发布一个计时器等,它会在适当的时间间隔后调用你的活动完成。
答案 3 :(得分:0)
我相信你可以调用FLAG_ACTIVITY_CLEAR_TOP as.an意图标志,除了从该意图开始的活动之外的所有活动都将被销毁,然后你也可以在那个上调用finish()并100%退出。