Java 尝试使用GoogleAppClient在空对象引用上调用android.os.Looper

Java 尝试使用GoogleAppClient在空对象引用上调用android.os.Looper,java,android-studio,nullreferenceexception,android-looper,Java,Android Studio,Nullreferenceexception,Android Looper,我正在尝试将我的应用程序转换为服务,这样它就不会被轻易地销毁并保持运行。为了便于使用,我已经将代码移动了好几次,试图找出正确的位置,但现在我明白了 java.lang.NullPointerException:尝试在空对象引用上调用接口方法“android.os.Looper com.google.android.gms.common.api.GoogleAppClient.getLooper() 它发生在这个代码块中: public void initiateMockLocs() {

我正在尝试将我的应用程序转换为服务,这样它就不会被轻易地销毁并保持运行。为了便于使用,我已经将代码移动了好几次,试图找出正确的位置,但现在我明白了

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“android.os.Looper com.google.android.gms.common.api.GoogleAppClient.getLooper()

它发生在这个代码块中:

public void initiateMockLocs() {
    Location mockLoc = new Location(LocationManager.NETWORK_PROVIDER);
    mockLoc.setLatitude(41.881832);
    mockLoc.setLongitude(-87.623177);
    mockLoc.setAccuracy(20);
    mockLoc.setTime(System.currentTimeMillis());
    mockLoc.setElapsedRealtimeNanos(System.nanoTime());

    try {
        LocationServices.FusedLocationApi.setMockMode(mMainActivity.mGoogleApiClient, true);
        LocationServices.FusedLocationApi.setMockLocation(mMainActivity.mGoogleApiClient, mockLoc);

        Location loc = LocationServices.FusedLocationApi.getLastLocation(mMainActivity.mGoogleApiClient);
        Log.i("Mock Location: ", loc.toString());

        Log.i("Timer", "Going to start timer.");
        logLocation();
        startTimer();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
具体来说,在“try”块下的第一行。这个函数是在我的onCreate服务中唯一调用的东西,所以在那里调用它。初始化mGoogleApiClient的其他一些背景信息如下:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayShowTitleEnabled(true);

    createLocationRequest();
    buildGoogleApiClient();
    mGoogleApiClient.connect();

    showProcesses = (Button) findViewById(R.id.listApps);
    showProcesses.setOnClickListener(listRunningApps);

    activateMockLocs = (Button) findViewById(R.id.activateMock);
    activateMockLocs.setOnClickListener(activateMockLocations);

    latView = (TextView) findViewById(R.id.latView);
    longView = (TextView) findViewById(R.id.longView);

    anonymizationService = new AnonymizationService();
}

protected synchronized void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(LocationServices.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}
// Initialize a LocationRequest object
protected void createLocationRequest() {
    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(10000);
    mLocationRequest.setFastestInterval(10000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
}
如果有人知道让MainActivity与服务对话并解决此问题的正确方法,那就太好了!我似乎找不到解决我的确切问题的答案。先谢谢你