如何获得App结束活动?

时间:2014-12-23 06:44:00

标签: android

我想在我的应用关闭时停止我的帖子。有谁知道我该怎么做?

public class ControlApplication extends Application
{
    private static final String TAG=ControlApplication.class.getName();
    private Waiter waiter;  //Thread which controls idle time
    private MySharedPrefrences prefs;

    // only lazy initializations here!
    @Override
    public void onCreate()
    {
        super.onCreate();
        Log.d(TAG, "Starting application" + this.toString());
        Context ctx=getApplicationContext();
        waiter=new Waiter(1*60*1000,ctx);//(1*60*1000); //1 mins
        prefs=new MySharedPrefrences(this);
   //    start();
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        Log.d(TAG,"App terminated");
        prefs.SetLastVisitedActivity("");
        waiter.stopThread();
        waiter.loginUpdate(false);

    }
}

我想在应用程序终止时调用某些方法,但我似乎无法使其正常工作。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

尝试调用super.onTerminate();停止线程后,即

@Override
public void onTerminate() {
    Log.d(TAG,"App terminated");
    prefs.SetLastVisitedActivity("");
    waiter.stopThread();
    waiter.loginUpdate(false);
    super.onTerminate();
}

更新:onTerminate永远不会在设备上运行。 http://developer.android.com/reference/android/app/Application.html#onTerminate%28%29

  

此方法适用于模拟过程环境。它永远不会在>生产Android设备上调用,只需杀死它们即可删除进程;这样做时不会执行用户代码>(包括此回调)。

所以你最好的办法是创建一个基础活动,并让所有其他活动扩展它。您可以使用活动的onPause(),但如果应用程序被终止,则除非您调用finish(),否则无法保证。

更新:正如Nasir在其中一条评论中所说,使用onPause不是一个好主意。

答案 1 :(得分:0)

如果您的应用程序只有一个入口点,那么在您的home / first活动中覆盖onDestroy()方法,并从该方法停止该线程。