我的应用程序使用LocationServices来请求位置更新。它通过PendingIntent将结果发送到Receiver。在onReceive ()中,从 Intent 中提取 LocationResult,从而产生一个Location ,然后用Lat和Lng表示,以供进一步使用。听起来不错,对吧?
好吧,应用程序开始因NullPointerException而崩溃。
我使用Debugger进行了调查,发现我上面描述的三行代码执行得很好,但是,然后,不是继续执行以下代码行,而是以某种方式再次将执行引导回三行中的第一行,这会提取LocationResult从一个意图。现在结果为 null,并在下一行发生NullPointerException崩溃,因为 LocationResult被假定为不为 null。
我不知道为什么会这样。请问有什么指点吗?(对不起双关语)
这是我的代码:
public class MyLocationUpdateReceiver extends BroadcastReceiver {
private static final String TAG = "MyLocationUpdateRcvr";
// empty constructor
public MyLocationUpdateReceiver(){}
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"onReceive update");
// extract locationResult from intent received from Update Request
LocationResult locationResult = LocationResult.extractResult(intent);
double locationLat = locationResult.getLastLocation().getLatitude();
double locationLng = locationResult.getLastLocation().getLongitude();
// send the Lat and Lng of new location to MapActivity via intent
Intent mIntent = new Intent(context.getApplicationContext(),
MapActivity.class);
mIntent.putExtra("New_Lat", locationLat);
mIntent.putExtra("New_Lng", locationLng);
mIntent.addFlags(FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mIntent);
}
}
这是第一次通过的屏幕截图。注意 LocationResult 不为空。
还在第一轮...
在第二轮...