我实现了一个具有以下功能的 Android 应用程序:
应用:public class ApplicationGlobalAgent extends Application
包含:
- a MainActivity:显示 GUI 绘图 -> 并从中启动其他活动。
- 一个网络 ServerSocket 和一个客户端 Socket:以双工模式发送/接收数据。
我想在 MainActivity 完成时终止应用程序,我做了如下:
在 MainActivity 扩展 Activity:
@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());
}
但结果是:
当没有网络连接时,应用程序成功终止,否则"Terminated!"
永远不会打印,直到我关闭另一端的网络套接字(连接到 Android 套接字)。
那么,当退出 MainActivity 并连接网络套接字时,如何强制应用程序正确和完全终止?
感谢您的所有帮助!