如何完全关闭你的应用程序?

时间:2018-06-14 16:41:21

标签: java android

我正在使用AsyncTask()与服务器进行通信,我每隔3秒就会收到并回复它。

我知道当我关闭我的应用程序时,通信仍在继续,因为我正在使用Toast来弹出答案。唯一的方法是强制关闭应用程序。有没有办法完全关闭它?

谢谢!

3 个答案:

答案 0 :(得分:3)

假设您在调用<?php $file_name = "video.mp4"; $subject = 'X'; $message = 'X'; $headers = 'From: x@x.com' . "\r\n" . 'Reply-To: x@x.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["video"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES["video"]["tmp_name"], $target_dir . $file_name)) { mail($_POST["email"], $subject, $message, $headers); } }?> 时呼叫AsyncTask.cancel()

我建议您保留一个变量,以了解您是否使用onDestroy()。使用此变量决定何时AsyncTask任务。

如果任务未在cancel()上运行cancel,则其他任务正在运行,然后在onStop()上。

请记住onDestroy()并在调用cancel()时释放所有资源。

答案 1 :(得分:1)

enter image description here

取决于你说“关闭”时的意思。当你关闭应用程序时,你的意思是将其暂停到后台?或退出。如果要在应用程序在onStop()上进行后台调用时停止异步任务,并在重新启动时继续使用onResume()。如果您的意思是通过应用切换器退出应用并强行关闭,请使用onDestory();

这是api文章的链接,详细解释了这一点。它被称为活动生命周期,了解它为Android应用程序编程的概念至关重要。

https://developer.android.com/guide/components/activities/activity-lifecycle

所以在onStop覆盖中,你会做类似的事情 yourAsyncTaskObj.cancel(真);

@Override
protected void onStop() {
    // place your code before super.onStop()
    yourAsyncTaskObj.cancel(true);
    super.onStop();

}

答案 2 :(得分:1)

考虑在整个app中制作泛型。你应该在Application.ActivityLifecycleCallbacks类中实现Application并避免基于Activity生命周期的所有泄漏。

@Override
    public void onActivityResumed(Activity activity) {
      Log.d("ActivityResumed");
    }

@Override
public void onActivityPaused(Activity activity) {
       Log.d("ActivityPaused");
}

@Override
public void onActivityStopped(Activity activity) {
       Log.d("ActivityStopped");
}

根据您的要求取消后台任务。

此外,我建议您使用Retrofit,Volley或任何其他良好的第三方网络库,以避免类似的其他情况。它使管理代码变得非常容易。