gpt4 book ai didi

react-native - 我该怎么做才能让 Headless JS 服务在 android 的前台运行?

转载 作者:行者123 更新时间:2023-12-04 05:02:13 29 4
gpt4 key购买 nike

我浏览了 React Native Headless JS 的官方文档。在警告中,提到如果应用程序将尝试在前台运行任务,应用程序将崩溃。还提到有一种方法可以解决这个问题。请提出一种方法,以便我可以完成繁重的任务当应用程序在前台时,使用 Headless JS 的 UI 线程以外的另一个线程。

最佳答案

使用 HeadlessJsTaskService 对我有用,即使从当前事件的事件开始。你试过它崩溃了吗?

编辑

我看了一下他们的实现。
您的应用程序将在以下情况下崩溃:

if (reactContext.getLifecycleState() == LifecycleState.RESUMED &&
!taskConfig.isAllowedInForeground()) { //crash }

(见 ReactContext)

这意味着您可以配置 HeadlessJsTaskConfig在您的 HeadlessJsTaskService 内与 trueallowedInForeground .

例如。
@Override
@Nullable
protected HeadlessJsTaskConfig getTaskConfig(Intent intent) {
Bundle extras = intent.getExtras();
WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
return new HeadlessJsTaskConfig(
"FeatureExecutor",
data,
5000,
true /* Don't crash when running in foreground */);
}

但在我的测试用例中,这一步不是必需的,即使在显示 ReactRootView 时也是如此。我认为原因是 ReactRootView 有自己的 ReactContext(这可能不是一个好主意)。

对于您的实现,您在使用 Headless JS 时应该考虑以下几点:

allowedInForeground whether to allow this task to run while the app is in the foreground (i.e. there is a host in resumed mode for the current ReactContext). Only set this to true if you really need it. Note that tasks run in the same JS thread as UI code, so doing expensiveoperations would degrade user experience.



(见 HeadlessJsTaskConfig.java)

关于react-native - 我该怎么做才能让 Headless JS 服务在 android 的前台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42219883/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com