Mine is an android tracking app. It gets gps location and send it to server. if gps location is not found it gets location using cell id. It works fine in android 2.3.3 . It also works in android 4.1.2 but stops after some time(2hrs or 8 hrs,sometimes 1 day), without any force close message. 
I googled but didn't find the error. Are any methods deprecated in 2.3.3.
Below is my code. the service is started repeatedly by the BroadcastReceiver which is started by AlarmManager.
I have written this in my manifest file:
<uses-sdk android:minSdkVersion="7" 
    android:targetSdkVersion="18"/>
GPSLoggerService class:
public class GPSLoggerService extends Service implements LocationListener {
    @Override
    public void onCreate() {
        AppLog.logString("GPSLoggerService.onCreate().");
        final SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        AppLog.logString("GPSLoggerService.onCreate().");
        data_mode = settings.getInt("data_mode", 1);
        boolean firstRecordAfterBoot = settings.getBoolean("justBooted", false);
        settings.edit().putBoolean("justBooted", false);
        super.onCreate();
        // db = new DBAdapter(this);
    }
    public int onStartCommand(Intent intent, int flags, int startId) {
        appendLog("in onStartCommend, ");
        AppLog.logString("GPSLoggerService.onStartCommand().");
        this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        startLoggingService();
        startMonitoringTimer();
        try {
            sendData();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // dbadapter = new DBAdapter(this);
        return Service.START_STICKY;
    }
    @Override
    public void onLocationChanged(Location location) {
        appendLog("onLocationChanged, ");
        AppLog.logString("GPSLoggerService.onLocationChanged().");
        didFindLocation = true;
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        altitude = location.getAltitude();
        // Toast.makeText(getApplicationContext(),"lat :"+latitude+"longi :"+longitude,
        // Toast.LENGTH_LONG).show();
        gpsaltitude = String.valueOf(altitude);
        gpslatitude = String.valueOf(latitude);
        gpslongitude = String.valueOf(longitude);
        mps = location.getSpeed();
        kmh = (float) (mps * 3.6);
        speed = Float.toString(kmh);
        SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        datetime = sdfDateTime.format(new Date(location.getTime()));
        appendLog(datetime + ", ");
    }
    @Override
    public void onProviderDisabled(String provider) {
        AppLog.logString("GPSLoggerService.onProviderDisabled().");
        appendLog("onLocationChanged, ");
    }
    @Override
    public void onProviderEnabled(String provider) {
        AppLog.logString("GPSLoggerService.onProviderEnabled().");
        appendLog("onProviderEnabled, ");
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        AppLog.logString("GPSLoggerService.onStatusChanged().");
        appendLog("onStatusChanged, ");
    }
    private void startLoggingService() {
        AppLog.logString("GPSLoggerService.startLoggingService.");
        turnGPSOn();
        db = new DBAdapter(this);
        if (manager == null) {
            manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        }
        ma = new MainActivity();
        final Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(true);
        criteria.setSpeedRequired(true);
        criteria.setBearingRequired(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        final String bestProvider = manager.getBestProvider(criteria, true);
        if (bestProvider != null && bestProvider.length() > 0) {
            manager.requestLocationUpdates(bestProvider, gpsMinTime, gpsMinDistance, this);
            startTimer();
        } else {
            final List<String> providers = manager.getProviders(true);
            for (final String provider : providers) {
                manager.requestLocationUpdates(provider, gpsMinTime, gpsMinDistance, this);
                startTimer();
            }
        }
    }
    private void stopLoggingService() {
        this.unregisterReceiver(this.mBatInfoReceiver);
        stopSelf();
    }
    private void startMonitoringTimer() {
        monitoringTimer = new Timer();
        AppLog.logString("GPSLoggerService.monitoringTimer.");
        monitoringTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                if (longitude != 0.0 && latitude != 0.0) {
                    monitoringTimer.cancel();
                    monitoringTimer = null;
                    turnGPSOn();
                    saveData();
                    manager.removeUpdates(GPSLoggerService.this);
                    stopLoggingService();
                }
            }
        }, GPSLoggerService.TIMER_DELAY, GPSLoggerService.TIMER_DELAY);
    }
    private void startTimer() {
        AppLog.logString("GPSLoggerService.countDownTimer.");
        appendLog("startTimer, ");
        // Toast.makeText(getApplicationContext(),"data_mode="+data_mode,
        // Toast.LENGTH_LONG).show();
        if (countDownTimer != null) {
            countDownTimer.cancel();
            countDownTimer = null;
        }
        countDownTimer = new CountDownTimer(15000L, 1000L) {// 15 seconds
                                                            // max
            @Override
            public void onTick(long millisUntilFinished) {
                if (didFindLocation) {
                    countDownTimer.cancel();
                }
            }
            @Override
            public void onFinish() {
                if (!didFindLocation) {
                    appendLog("onFinish, ");
                    manager.removeUpdates(GPSLoggerService.this);
                    // stopSelf()
                    if (data_mode == 1) {
                        cellID();
                    } else {
                        /*
                         * TelephonyManager telephonyManager =
                         * (TelephonyManager
                         * )getSystemService(Context.TELEPHONY_SERVICE);
                         * imeiCellID = telephonyManager.getDeviceId();
                         * SimpleDateFormat sdfDateTime = new
                         * SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
                         * datetimeCellID = sdfDateTime.format(new Date());
                         * db.open();
                         * id=db.insertData(imeiCellID,"null","null"
                         * ,datetimeCellID,"null","null",level1);
                         * db.close();
                         */
                        Toast.makeText(getApplicationContext(), "GPS : Cant find Location", Toast.LENGTH_LONG).show();
                    }
                    stopLoggingService();
                }
            }
        };
        countDownTimer.start();
    }
    private void turnGPSOn() {
        String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        if (!provider.contains("gps")) { // if gps is disabled
            final Intent poke = new Intent();
            poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
            poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
            poke.setData(Uri.parse("1"));
            sendBroadcast(poke);
        }
    }
    public void appendLog(String text) {
        // Toast.makeText(getApplicationContext(),"oncreate",
        // Toast.LENGTH_LONG).show();
        File folder3 = new File(Environment.getExternalStorageDirectory(), "BPCLTracker");
        if (!folder3.exists()) {
            folder3.mkdirs();
        }
        try {
            File kmlFile3 = new File(folder3.getPath(), "logfile.txt");
            if (!kmlFile3.exists()) {
                kmlFile3.createNewFile();
            }
            RandomAccessFile fileAccess3 = new RandomAccessFile(kmlFile3, "rw");
            FileLock lock = fileAccess3.getChannel().lock();
            fileAccess3.seek(kmlFile3.length());
            fileAccess3.write(text.getBytes());
            lock.release();
            fileAccess3.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public boolean isInternetOn() {
        ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        // ARE WE CONNECTED TO THE NET
        if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING
                || connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) {
            return true;
        } else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
            return false;
        }
        return false;
    }
    public int setFlag() {
        final SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        boolean firstRecord = settings.getBoolean("firstRecord", false);
        boolean firstRecordAfterBoot = settings.getBoolean("justBooted", false);
        if (firstRecord == true) {
            flag = 0;
            // Toast.makeText(getBaseContext(),"1st record after installation : "+flag,Toast.LENGTH_LONG
            // ).show();
            settings.edit().putBoolean("firstRecord", false).commit();
        } else if (firstRecordAfterBoot == true) {
            flag = 1;
            // Toast.makeText(getBaseContext(),"1st record after boot : "+flag,Toast.LENGTH_LONG
            // ).show();
            settings.edit().putBoolean("justBooted", false).commit();
        } else {
            flag = 2;
            // Toast.makeText(getBaseContext(),"regular : "+flag,Toast.LENGTH_LONG
            // ).show();
        }
        return flag;
    }
    public void cellID() {
        appendLog("in cellID, ");
        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
        int cid = cellLocation.getCid();
        int lac = cellLocation.getLac();
        SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        datetimeCellID = sdfDateTime.format(new Date());
        appendLog(datetimeCellID);
        String cell_Id = String.valueOf(cid);
        String gsm_Loc_Area_Code = String.valueOf(lac);
        // Toast.makeText(getBaseContext(),"cellid="+cell_Id+"\nGsm Location Area Code:"+gsm_Loc_Area_Code,Toast.LENGTH_LONG
        // ).show();
        if (RqsLocation(cid, lac)) {
            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            imeiCellID = tm.getDeviceId();
            latitude_cellID = String.valueOf((float) myLatitude / 1000000);
            longitude_cellID = String.valueOf((float) myLongitude / 1000000);
            // Toast.makeText(getBaseContext(),"Lat:"+latitude_cellID+"Long:"+longitude_cellID,Toast.LENGTH_LONG
            // ).show();
            // DBAdapter db=new DBAdapter(this);
            // --add contact----
            db.open();
            setFlag();
            datatype = String.valueOf(flag);
            id = db.insertData(imeiCellID, latitude_cellID, longitude_cellID, datetimeCellID, "null", "null", level1, datatype, "0");
            db.close();
            // --get all contacts----------
            db.open();
            Cursor c = db.getAllData();
            if (c.moveToFirst()) {
                do {
                    DisplayData(c);
                } while (c.moveToNext());
            }
            db.close();
        }// if
        else {
            Toast.makeText(getBaseContext(), "CellID : Can't find Location", Toast.LENGTH_LONG).show();
        }// else
    }// cellID
    private Boolean RqsLocation(int cid, int lac) {
        appendLog("in req location, ");
        // Toast.makeText(getBaseContext(),"inReqloc",Toast.LENGTH_LONG
        // ).show();
        Boolean result = false;
        String urlmmap = "http://www.google.com/glm/mmap";
        try {
            URL url = new URL(urlmmap);
            URLConnection conn = url.openConnection();
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setRequestMethod("POST");
            httpConn.setDoOutput(true);
            httpConn.setDoInput(true);
            httpConn.connect();
            OutputStream outputStream = httpConn.getOutputStream();
            WriteData(outputStream, cid, lac);
            InputStream inputStream = httpConn.getInputStream();
            DataInputStream dataInputStream = new DataInputStream(inputStream);
            dataInputStream.readShort();
            dataInputStream.readByte();
            int code = dataInputStream.readInt();
            if (code == 0) {
                myLatitude = dataInputStream.readInt();
                myLongitude = dataInputStream.readInt();
                result = true;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }
    private void WriteData(OutputStream out, int cid, int lac) throws IOException {
        DataOutputStream dataOutputStream = new DataOutputStream(out);
        dataOutputStream.writeShort(21);
        dataOutputStream.writeLong(0);
        dataOutputStream.writeUTF("en");
        dataOutputStream.writeUTF("Android");
        dataOutputStream.writeUTF("1.0");
        dataOutputStream.writeUTF("Web");
        dataOutputStream.writeByte(27);
        dataOutputStream.writeInt(0);
        dataOutputStream.writeInt(0);
        dataOutputStream.writeInt(3);
        dataOutputStream.writeUTF("");
        dataOutputStream.writeInt(cid);
        dataOutputStream.writeInt(lac);
        dataOutputStream.writeInt(0);
        dataOutputStream.writeInt(0);
        dataOutputStream.writeInt(0);
        dataOutputStream.writeInt(0);
        dataOutputStream.flush();
    }
    public void saveData() {
        // Toast.makeText(getApplicationContext(),"in saveData",
        // Toast.LENGTH_LONG).show();
        if (isInternetOn()) {
            appendLog("in saveDataAfter if internet is on, ");
            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            imeino = tm.getDeviceId();
            // DBAdapter db=new DBAdapter(this);
            // --add contact----
            db.open();
            setFlag();
            datatype = String.valueOf(flag);
            id = db.insertData(imeino, gpslatitude, gpslongitude, datetime, gpsaltitude, speed, level1, datatype, "1");
            db.close();
        } else if (!isInternetOn()) {
            appendLog("in saveDataAfter if internet is not not on, ");
            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            imeino = tm.getDeviceId();
            // DBAdapter db=new DBAdapter(this);
            // --add contact----
            db.open();
            setFlag();
            datatype = String.valueOf(flag);
            id = db.insertData(imeino, gpslatitude, gpslongitude, datetime, gpsaltitude, speed, level1, datatype, "1");
            db.close();
        }// elseif
    }// end of saveData() function
    public void sendData() throws ClientProtocolException, IOException {
        // Toast.makeText(getApplicationContext(),"in sendData",
        // Toast.LENGTH_LONG).show();
        appendLog("sendData, ");
        if (isInternetOn()) {
            JSONObject jObject = new JSONObject();
            try {
                // DBAdapter db=new DBAdapter(this);
                db.open();
                Cursor cursor = db.getAllData();
                if (cursor.moveToFirst()) {
                    do {
                        jObject = new JSONObject();
                        jObject.put("Imei", cursor.getString(1));
                        jObject.put("Lat", cursor.getString(2));
                        jObject.put("Long", cursor.getString(3));
                        jObject.put("Gpsdatetime", cursor.getString(4));
                        jObject.put("Altitude", cursor.getString(5));
                        jObject.put("Speed", cursor.getString(6));
                        jObject.put("Battery", cursor.getString(7));
                        jObject.put("DataType", cursor.getString(8));
                        jObject.put("DataSource", cursor.getString(9));
                        String datatoServer = jObject.toString() + "\n";
                        // Toast.makeText(getApplicationContext(),datatoServer,
                        // Toast.LENGTH_LONG).show();
                        HttpEntity entity;
                        HttpClient client = new DefaultHttpClient();
                        String url = "http://some IP/insertv2.php";
                        HttpPost request = new HttpPost(url);
                        StringEntity se = new StringEntity(datatoServer);
                        se.setContentEncoding("UTF-8");
                        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                        entity = se;
                        request.setEntity(entity);
                        HttpResponse response = client.execute(request);
                        entity = response.getEntity();
                        db.deleteContacts(cursor.getLong(0));
                    } while (cursor.moveToNext());
                }// if
                db.close();
            }// try
            catch (JSONException e) {
                e.printStackTrace();
            }
        }
    } // method
}// end of service class
Error log:
11-12 16:43:46.174: E/AndroidRuntime(23962): FATAL EXCEPTION: main
11-12 16:43:46.174: E/AndroidRuntime(23962): android.os.NetworkOnMainThreadException
11-12 16:43:46.174: E/AndroidRuntime(23962):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at bpcl.gps.tracker.GPSLoggerService.RqsLocation(GPSLoggerService.java:468)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at bpcl.gps.tracker.GPSLoggerService.cellID(GPSLoggerService.java:414)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at bpcl.gps.tracker.GPSLoggerService$3.onFinish(GPSLoggerService.java:288)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at android.os.Looper.loop(Looper.java:137)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at android.app.ActivityThread.main(ActivityThread.java:4947)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at java.lang.reflect.Method.invokeNative(Native Method)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at java.lang.reflect.Method.invoke(Method.java:511)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
11-12 16:43:46.174: E/AndroidRuntime(23962):    at dalvik.system.NativeStart.main(Native Method)
 
     
    