发出 Rest API 调用时,CN1 stop() 方法每次都不起作用
CN1 stop() method not working every time when issuing Rest API call
使用 stop() 方法发出休息 api 调用并将数据发送到云端(根据连接情况可能需要 0.1s-5s)是否明智?
requestBuilder.acceptJson().body(jsonDataBody).getAsJsonMap()
我问,因为我可以在模拟器上始终重现一个问题,即当我关闭应用程序时没有发送数据,但如果我通过按钮调用相同的过程,它就会出现。在真实设备上它似乎工作正常,但我偶尔会收到客户反馈说它并不总是有效,即。数据没有被发送到云端(虽然没有错误)。我无法使用自己的真实设备复制它。
我不得不盲目编码,并在我进行屏幕导航时通过插入一个新的异步休息调用来强制执行它,除了使用此方法外,它与 stop() 的作用相同
requestBuilder.acceptJson().body(jsonDataBody).fetchAsJsonMap()
背景:
我的数据在云数据库中,前面是 Rest APi's。我的应用程序使用存储来存储上次上传和下载数据的日期时间。当我通过 start() 打开我的应用程序时,它会发出休息呼叫并获取所有数据,带有日期时间戳 > 上次下载日期时间。当我关闭我的应用程序时,我通过 stop() 发出另一个调用,以将自上次上传日期时间以来本地更改的所有数据发送到云。每条记录都有一个 lastUpdateDatetime 实体 属性.
谢谢
由于两个原因,这是有问题的。首先是更简单的情况:
OS 可以快速调用 stop()
/start()
,因此您的应用程序将几乎立即停止并启动,如果您这样做可能会触发数据损坏不提防
更糟糕的问题是,如果某个操作需要更长的时间,某些 OS 可能会终止它。您可以使用后台提取来执行 downloads/uploads 而您的应用程序不是 运行,这将解决这里的技术问题
就我个人而言,我只会发送有关更改的数据。如果更改得太快,我会添加一个发送时间阈值,但在应用 运行 期间发送,而不是在 stop()
上发送。请注意,在设备上情况要复杂得多,因为它可能会突然决定终止应用程序以为 phone 应用程序或其他关键应用程序腾出空间。您需要进行防御性编程,并尽可能避免假设。
使用 stop() 方法发出休息 api 调用并将数据发送到云端(根据连接情况可能需要 0.1s-5s)是否明智?
requestBuilder.acceptJson().body(jsonDataBody).getAsJsonMap()
我问,因为我可以在模拟器上始终重现一个问题,即当我关闭应用程序时没有发送数据,但如果我通过按钮调用相同的过程,它就会出现。在真实设备上它似乎工作正常,但我偶尔会收到客户反馈说它并不总是有效,即。数据没有被发送到云端(虽然没有错误)。我无法使用自己的真实设备复制它。
我不得不盲目编码,并在我进行屏幕导航时通过插入一个新的异步休息调用来强制执行它,除了使用此方法外,它与 stop() 的作用相同
requestBuilder.acceptJson().body(jsonDataBody).fetchAsJsonMap()
背景: 我的数据在云数据库中,前面是 Rest APi's。我的应用程序使用存储来存储上次上传和下载数据的日期时间。当我通过 start() 打开我的应用程序时,它会发出休息呼叫并获取所有数据,带有日期时间戳 > 上次下载日期时间。当我关闭我的应用程序时,我通过 stop() 发出另一个调用,以将自上次上传日期时间以来本地更改的所有数据发送到云。每条记录都有一个 lastUpdateDatetime 实体 属性.
谢谢
由于两个原因,这是有问题的。首先是更简单的情况:
OS 可以快速调用
stop()
/start()
,因此您的应用程序将几乎立即停止并启动,如果您这样做可能会触发数据损坏不提防更糟糕的问题是,如果某个操作需要更长的时间,某些 OS 可能会终止它。您可以使用后台提取来执行 downloads/uploads 而您的应用程序不是 运行,这将解决这里的技术问题
就我个人而言,我只会发送有关更改的数据。如果更改得太快,我会添加一个发送时间阈值,但在应用 运行 期间发送,而不是在 stop()
上发送。请注意,在设备上情况要复杂得多,因为它可能会突然决定终止应用程序以为 phone 应用程序或其他关键应用程序腾出空间。您需要进行防御性编程,并尽可能避免假设。