Java 访问JobIntentService内的类字段值时出现问题
我试图在Android上使用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
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
中