我需要在 flutter 应用程序中添加原生粘性后台服务,以实现两件事:
但是,我找不到任何有用的文档。目前看来,您必须选择完全原生或放弃使用低级功能并仅关注 UI(直到有人从帽子里拿出一个特定的插件)。
因此,我的问题如下:从基本的 flutter 项目开始,实现这种集成的最简单方法是什么?
谢谢
在WP7应用程序中,我调用一些代码来更新ScheduledAgent类上的onInvoke方法的实时磁贴.
获得无效的跨线程错误.
失败的路线是
var fontForeground = new SolidColorBrush(Colors.White);
Run Code Online (Sandbox Code Playgroud)
据我所知,我无法在此后台任务中调用API的限制,但我只是尝试设置一些内容来生成我自己的图像以显示在Live磁贴上.
有没有明显的东西我在这里做错了.
更新中...
我发现了这个问题
如何在Windows Phone 7中的后台线程上的WriteableBitmap上呈现文本?
这是我遇到的同样的问题,虽然在这里有一些很好的对话但似乎没有一种简单的方法来解决这个问题?
我有一个Shell命令,我想在后台运行,我已经读过这可以通过后缀一个&命令来完成,这个命令导致它作为后台进程运行但是我需要一些更多的功能,并且想知道如何去做吧:
service apache2 start.我怎么能这样做?是否有工具允许我将命令作为服务运行?
我有点迷失了.
谢谢
情况如下:
我正在使用imagepicker选择一个大型视频.显然,选择器需要一些时间来压缩视频.因此,为了简化用户体验,我已为其启用了后台任务.
现在问题来了:
如果用户选择一个视频并点击主页按钮,应用程序将转到后台并继续压缩视频,持续600秒.后台任务到期.在到期处理程序中,我已经停止了后台任务.
现在,如果用户在后台到期后正在恢复应用程序
- (void)applicationDidBecomeActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)
没有被调用.谁能解释我为什么会这样?
我的意图是这个.
我的client.html通过ajax调用php脚本check.php.我想check.php检查是否已经运行了另一个脚本task.php.如果是,我什么都不做.如果不是,我需要在后台运行它.
我知道自己想做什么,但我不确定该怎么做.
A部分.我知道如何通过ajax调用check.php.
B部分.在check.php中,我可能需要运行task.php.我想我需要这样的东西:
$PID = shell_exec("php task.php > /dev/null & echo $!");
Run Code Online (Sandbox Code Playgroud)
我认为">/dev/null&"位告诉它在后台运行,但我不确定"$!"是什么 确实.
C部分.我需要的$ PID作为流程的标签.我需要将这个数字(或其他)写入同一目录中的文件,并且需要在每次调用check.php时读取它.我无法弄清楚如何做到这一点.有人可以给我一个如何读取/写入具有单个数字的文件到同一目录的链接吗?
D部分然后检查上次启动的task.php是否仍在运行我将使用该函数:
function is_process_running($PID)
{
exec("ps $PID", $ProcessState);
return(count($ProcessState) >= 2);
}
Run Code Online (Sandbox Code Playgroud)
我认为这就是我需要的所有东西,但正如你所看到的,我不确定如何做其中的一些.
这是我的两个例子:
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.HTTPAdditionalHeaders = ["Accept": "application/json",
"Content-Type": "application/json",
"User-Agent": UIDevice.currentDevice().model]
var request = NSMutableURLRequest(URL: NSURL(string: "http://XXX"))
request.HTTPMethod = "POST"
let valuesToSend = ["key":value, "key2":value]
var error: NSError?
let data = NSJSONSerialization.dataWithJSONObject(valuesToSend, options:NSJSONWritingOptions.PrettyPrinted, error: &error)
request.HTTPBody = data
if error == nil {
let task = NSURLSession(configuration: config).dataTaskWithRequest(request,
completionHandler: {data, response, error in
if error == nil {
println("received == \(NSString(data: data, encoding: NSUTF8StringEncoding))")
}
})
task.resume()
} else {
println("Oups error \(error)")
}
Run Code Online (Sandbox Code Playgroud)
和第二个
let config = …Run Code Online (Sandbox Code Playgroud) 我一直在尝试编写一个从串口读取数据的python脚本.它从命令行运行良好,但我需要它作为后台进程运行,没有任何命令行界面.该脚本有一个while循环,它从串行端口读取下一个数据字节并相应地模拟按键.对于要关注当前窗口的按键,而不是python命令行,我需要脚本作为后台进程运行.我在这里读了几个答案,但对我来说没有任何响铃.请指出我正确的方向.
我在粘性通知中有一个自定义按钮.
我曾经附加一个PendingIntent用于接收按钮点击:
Intent intent = new Intent();
intent.setAction("com.example.app.intent.action.BUTTON_CLICK");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 2000, intent, PendingIntent.FLAG_UPDATE_CURRENT);
contentViewExpanded.setOnClickPendingIntent(R.id.button, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
当我在奥利奥上运行此代码时,我进入BroadcastQueue: Background execution not allowedlogcat并且没有收到按钮点击.
我用清单注册了接收器:
<receiver
android:name=".BroadcastReceiver.NotificationActionReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.example.app.intent.action.BUTTON_CLICK"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我也尝试在我的代码中注册接收器:
NotificationActionReceiver mMyBroadcastReceiver = new NotificationActionReceiver();
IntentFilter filter = new IntentFilter("com.example.app.intent.action.BUTTON_CLICK");
mContext.registerReceiver(mMyBroadcastReceiver, filter);
Run Code Online (Sandbox Code Playgroud)
这只适用于应用程序对用户可见的情况.
感谢帮助
android background-process broadcastreceiver android-notifications android-8.0-oreo
工作管理器是一个新的API,我尝试每秒执行一次任务,但它不起作用.
这是我的工人班
class TestingWorker : Worker(){
override fun doWork(): Result {
Log.i("CheckWorker","Result here")
return Result.SUCCESS
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我所说的.
val recurringWork: PeriodicWorkRequest = PeriodicWorkRequest.Builder(TestingWorker::class.java, 1, TimeUnit.SECONDS).build()
WorkManager.getInstance()?.enqueue(recurringWork)
Run Code Online (Sandbox Code Playgroud) android background-process background-service kotlin android-workmanager