Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
Eğitim Geçmişi
Sertifikalar & Başarılar
Kullanıcıya ait test sonucu bulunmamaktadır.
Dil Becerileri
Son Forum Aktiviteleri
3Android Service Yeniden Başlatma ??
Selam,
Geliştirdiğim uygulamamda arka planda çalışan bir servis ile sürekli async http post ile veri gönderimi yapıyorum. Fakat bazı zamanlar oluşan exception'lar yüzünden uygulama kill oluyor, bu durumda uygulama kill olsa bile servis'imin yaşamını sürdürmesi gerekiyor, hataya da düşse tekrar startlanması lazım.
Bunu nasıl yapabilirim ?
Teşekkürler
Android AsyncTask'te Hata Kontrolü ?
Arkadaşlar merhaba, androidte asynctask kullanarak sunucuma veri gönderiyorum
Fakat şöyle bir problemim var, bir şekilde işlem sırasında internetin gittiğini veya teknik bir problemin olduğunda uygulamanın kapanmaması için nasıl bir hata kontrolü yapmalıyım ? Gerekli try catchler var ama yinede uygulamayı atıyorum internet bağlantısı olmadan açtığımda direk uygulamayı kapatıyor, ben uygulamayı kapatmadan yine devam etmesini istiyorum
Async Class'ım
[code]
public class MyServiceAsync extends AsyncTask<String, String, Boolean> {
private String json;
private JSONObject jObj;
@Override
protected Boolean doInBackground(String... params) {
Boolean result = false;
try {
JSONArray jsonArrays = GetJson(params[0]).getJSONArray("GetPost");
if (jsonArrays.length() > 0) result = true;
} catch (JSONException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(Boolean result) {
}
private JSONObject GetJson(String URL) throws JSONException {
// Making HTTP request
try {
URL url = new URL(URL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestProperty("Content-Type", "0");
httpURLConnection.setRequestMethod("GET");
//httpURLConnection.setRequestProperty("Connection", "close");
httpURLConnection.setUseCaches(false);
httpURLConnection.setConnectTimeout(60000);
httpURLConnection.setReadTimeout(60000);
httpURLConnection.setAllowUserInteraction(false);
httpURLConnection.setInstanceFollowRedirects(true);
httpURLConnection.connect();
int status = httpURLConnection.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
json = sb.toString();
jObj = new JSONObject(json);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jObj;
}
}
[/code]
Arkaplan Serviste LocationListener Kullanımı
Merhaba gelistirmek istedigim uygulamamda belirli zaman aralıgında arka planda aldıgım kordinatları uzak sunucuma post etmek istiyorum fakat Servis kısmında aşagıdaki hatayı alıyorum.
Can't create handler inside thread that has not called Looper.prepare()
Uygulama locationManager. requestlocationupdates metodunda olusuyor problem. Servisim extends Service implements LocationListener olarak tanımladım gerekli islemleri yapıyorum sorun nerede anlamadım yardımcı olursanız sevinirim
[code]
public class CoordinateService extends Service implements LocationListener {
//Gerekli değişkenlerim vb.
//Servis Methodum
@Override
public void onCreate() {
super.onCreate();
timer = new Timer();
handler = new Handler(Looper.getMainLooper());
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getLocation();
// Yukardaki methodtan sonra asynctask ile verileri post ediyorum.
}
}, 0, 60 * 2000);
}
//Location değişkenimi set ettiğim method'um
public Location getLocation() {
try {
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
}
[/code]