我想在我的应用关闭时停止我的帖子。有谁知道我该怎么做?
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);
}
}
我想在应用程序终止时调用某些方法,但我似乎无法使其正常工作。有什么建议吗?
答案 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()方法,并从该方法停止该线程。