Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有Headless JS的Android后台服务不起作用_Java_Android_React Native_Background Process_Headless - Fatal编程技术网

Java 带有Headless JS的Android后台服务不起作用

Java 带有Headless JS的Android后台服务不起作用,java,android,react-native,background-process,headless,Java,Android,React Native,Background Process,Headless,到目前为止,我已经实施了: MainApplication.java: @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); initializeFlipper(this); // Remove this line if you don't want Flipper enabled Inten

到目前为止,我已经实施了:

MainApplication.java:

    @Override
    public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    initializeFlipper(this); // Remove this line if you don't want Flipper enabled

    Intent service = new Intent(getApplicationContext(), MyTaskService.class);

    getApplicationContext().startService(service);
  }
package com.myApp;

import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
import javax.annotation.Nullable;
import com.facebook.react.bridge.WritableMap;

public class MyTaskService extends HeadlessJsTaskService {

   @Override
  protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {

Bundle extras = intent.getExtras();
  WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
return new HeadlessJsTaskConfig(
    "SomeTaskName", // Use the registered headless Task here
    data,
    5000);
}
}
  <service android:name="com.myApp.MyTaskService" />
AppRegistry.registerHeadlessTask('SomeTaskName', () => SomeTaskName);
MyTaskService.java:

    @Override
    public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    initializeFlipper(this); // Remove this line if you don't want Flipper enabled

    Intent service = new Intent(getApplicationContext(), MyTaskService.class);

    getApplicationContext().startService(service);
  }
package com.myApp;

import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
import javax.annotation.Nullable;
import com.facebook.react.bridge.WritableMap;

public class MyTaskService extends HeadlessJsTaskService {

   @Override
  protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {

Bundle extras = intent.getExtras();
  WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
return new HeadlessJsTaskConfig(
    "SomeTaskName", // Use the registered headless Task here
    data,
    5000);
}
}
  <service android:name="com.myApp.MyTaskService" />
AppRegistry.registerHeadlessTask('SomeTaskName', () => SomeTaskName);
AndroidManifest.xml:

    @Override
    public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    initializeFlipper(this); // Remove this line if you don't want Flipper enabled

    Intent service = new Intent(getApplicationContext(), MyTaskService.class);

    getApplicationContext().startService(service);
  }
package com.myApp;

import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
import javax.annotation.Nullable;
import com.facebook.react.bridge.WritableMap;

public class MyTaskService extends HeadlessJsTaskService {

   @Override
  protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {

Bundle extras = intent.getExtras();
  WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
return new HeadlessJsTaskConfig(
    "SomeTaskName", // Use the registered headless Task here
    data,
    5000);
}
}
  <service android:name="com.myApp.MyTaskService" />
AppRegistry.registerHeadlessTask('SomeTaskName', () => SomeTaskName);
SomeTaskName.js(注册代码):

    module.exports = async (taskData) => {
    alert('test');
    console.log('Went to background');
 }

使用此代码,它会运行,但会立即关闭应用程序,并且不会显示任何错误。你知道为什么会发生这种情况,为什么我不能调用alert and console.log吗?

MainApplication.java
文件中添加
Intent
,并在
SoLoader.init()之前调用函数
getApplicationContext()
行,你错过了这个调用

HeadlessJsTaskService.acquireWakeLockNow(context)
根据文件要求:

如果要从{@code-HeadlessJsTaskService}启动{@code-HeadlessJsTaskService} BroadcastReceiver}(例如。*处理推送通知),请确保 在从*{@link返回之前调用{@link#acquireWakeLockNow} BroadcastReceiver#onReceive},以确保设备不会转到 在*服务启动前睡眠


你解决问题了吗?还是不为我工作。。我怎样才能知道任务是否被执行。。。无法控制台或无法放置警报语句?