Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 访问JobIntentService内的类字段值时出现问题_Java_Android_Jobintentservice - Fatal编程技术网

Java 访问JobIntentService内的类字段值时出现问题

Java 访问JobIntentService内的类字段值时出现问题,java,android,jobintentservice,Java,Android,Jobintentservice,我试图在Android上使用JobIntentService,但在访问onHandleWork方法中的类字段时遇到问题。我的discoverable字段在onHandleWork方法中似乎总是为空 这是我的JobIntentService类: import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support

我试图在Android上使用
JobIntentService
,但在访问
onHandleWork
方法中的类字段时遇到问题。我的
discoverable
字段在
onHandleWork
方法中似乎总是为空

这是我的JobIntentService类:

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v4.app.JobIntentService;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import io.hypertrack.smart_scheduler.Job;
import io.hypertrack.smart_scheduler.SmartScheduler;

public class NetworkCheckService extends JobIntentService {
  private static final int jobId = 1;

  private Settings settings;
  private NetworkInformation networkInfo;
  private Networks networks;
  private Discoverable discoverable;

  {
    Logger.addLogAdapter(new AndroidLogAdapter());
  }

  // Needs an empty constructor for some reason.
  public NetworkCheckService() {
  }

  public NetworkCheckService(Context context) {
    this.settings = new Settings(context);
    this.networkInfo = new NetworkInformation(context);
    this.networks = new Networks(context, networkInfo);
    this.discoverable = new Discoverable(settings, networks);
  }

  private Discoverable getDiscoverable() {
    return discoverable;
  }

  static void enqueueWork(Context context, Intent work) {
    enqueueWork(context, NetworkCheckService.class, jobId, work);
  }

  public void onHandleWork(@NonNull Intent intent) {
    Logger.d(discoverable); // discoverable is null
    Discoverable foo = getDiscoverable(); // foo is null
  }

}
我的主要活动课:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    NetworkCheckService networkCheckService = new NetworkCheckService(this);
    networkCheckService.enqueueWork(this, new Intent());
  }

}

我们不应该在服务类中创建任何构造函数。它是通过安卓系统实现的。这就是您的成员变量变为
null
的原因。最好在handlework方法中初始化它们。

我们不应该在服务类中创建任何构造函数。它是通过安卓系统实现的。这就是您的成员变量变为
null
的原因。最好在onHandleWork方法中初始化它们。

可发现类在做什么?我认为
discoverable=newdiscoverable(设置、网络)
应该在
onHandleWork
中,如果做任何长时间的工作,那么discoverable类在做什么?我认为
discoverable=newdiscoverable(设置、网络)
如果做任何长时间的工作,应该在
onHandleWork