我的 iOS 应用程序可以通过操作按钮接收推送通知:
点击按钮通过 UrlSession 和数据任务发送 post http 请求。当应用程序暂停或未运行时,它可以很好地工作。但当应用程序处于后台时,例如当用户刚刚从底部向上滑动(或按下主页按钮)时,它不起作用。推送操作会处理,但 http 请求不会发送。
从我的 iPhone 的控制台 os_logs 中,我看到 UrlSession 无法从后台建立连接并抛出错误 Code=-1005“网络连接丢失。”。我一杀掉应用程序就可以了。我尝试了不同的 url 会话配置、后台 url 会话、后台任务,但没有任何效果。我发现的唯一解决方法是使用exit(0)fromapplicationDidEnterBackground方法,但强烈不建议以编程方式终止应用程序。
问题:当应用程序处于后台时,如何通过推送通知操作建立 http 连接?
我的代码:
class NotificationService: NSObject, UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// notification processing if app is in foreground
...
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let requestId = String(describing: response.notification.request.content.userInfo["requestId"] …Run Code Online (Sandbox Code Playgroud) 我需要一个后台进程来运行每分钟左右.我不希望这个过程干扰应用程序其余部分的响应能力.这是一个线程的好候选人吗?如果是这样,你会如何建议我设置线程 - 特别是哪些类/方法可以调查?
从星期一到星期五,上午9点到下午4点我想点击特定的URI.如果命中成功,我想创建/覆盖一个文件(这部分已经完成).我不确定使用cron作业做这件事会更好还是创建后台服务会更好.我打算在带有1 GB RAM的VPS上运行它.我知道这很少,但现在我能买得起.使用cron作业或后台服务会更好吗?
如何将应用程序(活动?)放到后台,以便它可以在那里工作?
moveTaskToBack(true);不起作用.我有android:noHistory="true"和这个代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
moveTaskToBack(true);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
怎么了?如何将应用程序放到后台?
upd:或者我可以只在root(MAIN,LAUNCHER)活动中使用moveTaskToBack(true)?
我有一个在后台运行的应用程序,我需要它使用前置摄像头伪随机拍摄照片并将其发送到数据库.
我想到的一个可能的解决方案是使用URL方案打开另一个应用程序,它将拍摄并发送它,然后使用另一个URL方案来打开后台应用程序备份.有谁知道这是否可能?
或许还有更好的解决方案.
我们有一个Rails应用程序,其中某些请求在具有delayed_job的worker dyno上触发长时间运行的任务,而前端轮询直到它收到结果.
我们的流量虽小但增长很快,而且任务通常只需几秒钟即可完成,但最多可能需要一分钟.现在,每个web和worker dyno都足以处理我们的负载.
问题是,delayed_job队列不会并行处理作业,因此较长的任务最终会阻碍其后面的任务.
我们正在寻找的是类似于后端的Unicorn,其中单个工作人员可以同时处理多个任务.因为它是Rails,我们正在寻找多进程而不是多线程的东西.
(我们尝试在procfile中创建多个worker条目 - 这在本地开发框中工作,但在Heroku上没有)
Procfile:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
# Multiple workers defined here doesn't translate into multiple processes on single worker dyno:
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)
这篇Heroku文章建议使用resque-pool gem作为解决方案.这是唯一的解决方案,还是delayed_job也可用于并行后台作业?
在执行我的脚本期间,我需要将一个大文件写入磁盘以存储部分计算.这个文件很大,其余的脚本不需要它.目前,我需要等待写入完成才能继续执行脚本.
有没有办法在后台编写文件?有点像启动一个单独的写入过程,而其余的脚本继续不受干扰?
我只是试图实现一个后台进程(第一次),我正在寻找一个廉价的解决方案,我发现这个宝石shoryuken,但没有足够的材料关于它的设置,你知道一个教程或博客文章显示shoryuken在行动?你可以给我的任何材料都会很好我在谷歌做了深入的研究,但找不到任何有用的...
ruby ruby-on-rails backgroundworker background-process ruby-on-rails-4
对于应用程序,即使当前未显示该应用程序,我也希望在后台渲染事物。官方文档写过通过GLSurfaceView打开GLcontext。对于不显示图形并渲染到另一个目标中,似乎不是一个真正的解决方案。
那么问题是如何在Android中创建没有GLSurfaceView的GL上下文?
用例:录制视频并将当前时间作为文本直接添加到视频中。为此,基于CPU的图像处理只会减慢实时执行的速度。至少在录制时还应该显示视频。OpenGL可以将所有内容简单地渲染到Framebuffer / Renderbuffer中。
我有一个后台脚本,定期重新加载当前选项卡.
var code = 'window.location.reload();';
chrome.tabs.executeScript(my_active_tab, {code: code});
Run Code Online (Sandbox Code Playgroud)
每次重新加载页面后,我立即要注入另一个脚本.
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab){
if (changeInfo.status == 'complete') {
chrome.tabs.executeScript(tabId, { file: "my_script.js" });
}
});
Run Code Online (Sandbox Code Playgroud)
以上是我目前的代码.问题是,它工作但速度太慢,因为它在每个图像加载后都会等待.
我的目标是在DOM加载后立即执行脚本.有任何想法吗?
javascript google-chrome background-process google-chrome-extension
android ×2
ios ×2
objective-c ×2
ruby ×2
cocoa ×1
cron ×1
delayed-job ×1
file-io ×1
heroku ×1
iphone ×1
javascript ×1
networking ×1
opengl-es ×1
python ×1
resque ×1
swift ×1