当我的应用程序被终止时,如何将数据发布到服务器?我使用NSURLSession类。我尝试在applicationWillTerminate运行时发布数据,但它不起作用。
答案 0 :(得分:2)
applicationWillTerminate
不适用于此类任务,您可能没有足够的时间执行与服务器相关的操作。
此方法可让您的应用知道它即将被终止 完全从记忆中清除。您应该使用此方法执行任何操作 应用程序的最终清理任务,例如释放共享资源, 保存用户数据,并使计时器无效。你执行这个 方法有大约五秒钟来执行任何任务并返回。 如果方法在时间到期之前没有返回,则系统可能会终止 整个过程。
答案 1 :(得分:0)
为此目的使用applicationDidEnterBackground
方法。
答案 2 :(得分:0)
在其他合法答案的基础上,您可以尝试在应用程序进入后台时发送数据,但在某些情况下,应用程序可能会在请求完成之前终止。另一种方法是在本地存储数据(取决于您的数据包含的内容)(即android.support.v4.app.NotificationCompat.Action replayAction = new NotificationCompat.Action.Builder(R.mipmap.ic_launcher, "Replay", PendingIntent.getActivities(this, 1, new Intent[]{new Intent(this, ReplayActivity.class)}, PendingIntent.FLAG_UPDATE_CURRENT))
.addRemoteInput(new RemoteInput.Builder("KEY").setAllowFreeFormInput(true).setLabel("Enter text you want to send").build())
.build();
android.support.v4.app.NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_notification_icons) // Must Required
.addAction(replayAction);
...// Notification Configuration
android.app.NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mgr.notify(1, builder.build());
),然后在将来的某个时间点打开应用程序时发出请求。一个明显的警告是,如果用户正在访问来自多个客户端(如网站或其他设备)的数据,则需要在提出请求时对其进行协调。