我實現了具有以下特點的Android應用程序:如何正確地終止Android應用程序與現場插座
應用:public class ApplicationGlobalAgent extends Application
包含:
- 一個MainActivity:顯示GUI描繪 - >,並開始從其他活動它。
- 一個網絡ServerSocket和一個客戶端Socket:以雙工模式發送/接收數據。
我要終止應用程序時MainActivity完成,我做了如下:
在MainActivity擴展活動:
@Override
public void finish()
{
super.finish();
Log.d(DEBUG_TAG, "finish and call app termination");
//call the application to terminate
getApplication().onTerminate();
}
在ApplicationGlobalAgent擴展應用:
@Override
public void onTerminate()
{
// do close ServerSocket and client Socket in networking threads
mNetworkManager.DoStop();
System.gc();
Log.d(DEBUG_TAG, "Terminated!");
super.onTerminate(); //?? should be placed at the end of functions ??
//totally kill this application process
android.os.Process.killProcess(android.os.Process.myPid());
}
分BUT的結果是:
當沒有網絡連接,應用程序成功終止,否則"Terminated!"
從不打印直到我收於另一側的網絡套接字(誰連接到Android套接字)。
那麼,如何在連接網絡套接字退出MainActivity時,我的強制應用程序正確並完全終止?
感謝您的幫助!
殘忍地說,幾乎所有的東西都是不正確的。我*強烈*鼓勵您閱讀[**流程生命週期**](http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle)和[**'活動'生命週期**](http://developer.android.com/guide/components/activities.html#Lifecycle)。 – 2012-08-10 03:09:20