如何从MainActivity.class启动应用程序销毁的意图服务

时间:2016-10-12 06:45:11

标签: android android-service

  

此方法位于Mainactivity.class中。我希望在应用程序销毁

时调用此方法
   @Override
    protected void onDestroy() {

        if (singleQuestion.size() > 0) {
            LastQuestionService.answerLastQuestion(context, singleQuestion.get(0));
        }

        super.onDestroy();

        MyLog.e(TAG, "onDestroy");
}

3 个答案:

答案 0 :(得分:0)

在活动被销毁时自动调用。例如,当您按下后退按钮时,活动将被销毁,并且将调用onDestroy()方法。但是如果按,Home或Menu butoon,那么onDestory()方法将不会被调用,而是调用onPause()方法。 因此,为了检查它,重写OnUserLeaveHint(),在这种情况下将调用它。

答案 1 :(得分:0)

也许您可以尝试将其放在finish()内。它最终会调用onPause()> onStop()跟随onDestroy()。使用finish()会杀死活动并释放内存,因此您可以有效地说您的应用程序已被杀死,因为我认为您将按后退按钮关闭应用程序。

请注意,由于多种原因,finish()可能无需致电onDestroy()。阅读本文以获取更多信息Android: Will finish() ALWAYS call onDestroy()?

答案 2 :(得分:0)

Imo,问题在于耗能问题和context值。 可能的解决方案:

  1. 可能singleQuestion.size() > 0是假的? :)
  2. 使用getApplicationContext()getBaseContext()代替context
  3. 将广播事件调入WakefulBroadcastReceiver url,启动您自己的服务
  4. startForeground中使用Service通知,以防止您的进程被杀死。 url