我试图在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());
  }

}

最佳答案

我们不应在服务类中创建任何构造函数。它由android系统完成。这就是您的成员变量变为null的原因。最好在onHandleWork方法中对其进行初始化。

关于java - 无法访问JobIntentService内部的类字段值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51758913/

10-11 22:40
查看更多