我在Android中创建了一个应用程序,其中我有一个 TCP客户端,但现在我只想在应用程序即将关闭时向服务器发送消息,我试图在 onDestroy 方法中添加openConnection
(与TCP客户端打开连接)和sendMessage
(向TCP服务器发送消息)操作但<强大>没有用。
我已经使用的TCP客户端在guide中,实际上我需要发送此消息以便与服务器通信,该设备与设备的通信已关闭并发送消息&#34;设备离线&#34;然后关闭应用程序。
答案 0 :(得分:1)
方法1:您可以使用 ActivityLifecycleCallbacks 来实现此目的。下面是一些日志的例子。
public class MyApplication extends Application {
private static final String TAG = MyApplication.class.getSimpleName();
private int mVisibleCount;
private boolean mInBackground;
@Override public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override public void onActivityStarted(Activity activity) {
mVisibleCount++;
if (mInBackground && mVisibleCount > 0) {
mInBackground = false;
Log.i(TAG, "App in foreground");
}
}
@Override public void onActivityResumed(Activity activity) {
}
@Override public void onActivityPaused(Activity activity) {
}
@Override public void onActivityStopped(Activity activity) {
mVisibleCount--;
if (mVisibleCount == 0) {
if (activity.isFinishing()) {
Log.i(TAG, "App is finishing");
} else {
mInBackground = true;
Log.i(TAG, "App in background");
}
}
}
@Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override public void onActivityDestroyed(Activity activity) {
}
});
}
public boolean isAppInBackground() {
return mInBackground;
}
public boolean isAppVisible() {
return mVisibleCount > 0;
}
public int getVisibleCount() {
return mVisibleCount;
}
}
方法2:使用Service检测应用程序是否已终止的另一种方法。见link
答案 1 :(得分:0)
跟随diff动作的方法调用
使用主页按钮最小化应用程序 - &gt;这个叫
的onPause() 的onStop()
从任务管理器中移除应用程序 - &gt;
然后为该MainActivity(启动器)调用onDestroy()。
所以创建一个父Activity假设命名为BaseActivity并覆盖它 onPause(),onDestroy()和onStop()方法并调用你的 从这里开始实现,然后从你的 另一项活动
答案 2 :(得分:0)
您不应该依赖onDestroy方法。根据官方的android文档,它不会被永远调用。
尝试将相同的代码放在活动的onStop()方法中。
此外,您可以拥有由所有其他活动扩展的父活动。
然后,您可以覆盖特定子活动中的onPause()和onStop()方法,并处理特定方案。