ユーザーの場所の変更を追跡するために locationListener を実装する Android アプリ内にサービスがあります。
場所が変わるたびに、サーバーに送信したい。
そのため、onLocationChanged メソッドで緯度と経度を取得しています。それらをネットワーク経由でサーバーに送信したい。したがって、新しいスレッドを作成しました (メイン スレッドではネットワーク操作が許可されていないため)。ただし、このスレッドで java.lang.NullPointerException が発生します。
私は何をすべきか?
これが私のコードです.....
public class SService extends Service implements LocationListener{
public class LocalBinder extends Binder {
SplashService getService() {
return SplashService.this;
}
}
@Override
public void onCreate() {
super.onCreate();
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//Shows notification
showNotification();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("SService", "Received start id " + startId + ": " + intent);
// Sets parameters and location providers
setLocationParam();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
// Cancel the persistent notification.
mNM.cancel(NOTIFICATION);
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
// This is the object that receives interactions from clients. See
// RemoteService for a more complete example.
private final IBinder mBinder = new LocalBinder();
@Override
public void onLocationChanged(Location location) {
// Getting latitude of the current location
latitude = location.getLatitude();
// Getting longitude of the current location
longitude = location.getLongitude();
Log.v("SSERVICE",latitude+" "+longitude);
final SMessage sm=new SMessage("0", latitude, longitude,"");
// Creates new thread
new SThread(sm).start();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}