Soru & Cevap

Socket Programlama

04.03.2014 - 01:36

Androidde socket programlama ile yaptığım bir uygulamada "Errorandroid.os.NetworkOnMainThreadException" hatası alıyorum ve ilerilye gidemedim. nasıl baş edbilirm bu hatayla? şimdiden teşekkür ederim

14 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-4816-1393230227.jpg
selim.tekinarslan
10.03.2014 - 02:45

Selam, örnekte parametre geçişleri mevcut, Doingback kısmında params bir string array ve içinden parametre çekiyorsun.

private class Setup extends AsyncTask<String, Integer, Void> { @Override protected Void doInBackground(String... params) { String identifier = params[0]; if (identifier.matches("abc")) { publishProgress(0); db.insert_fri(); } else if ((identifier.matches("xyz"))) { publishProgress(1); db.insert_met(); } } return null; } @Override protected void onProgressUpdate(Integer... i) { // start the song here if (i[0] == 0) { song.setLooping(true); song.start(); } } @Override protected void onPostExecute(Void res) { } @Override protected void onPreExecute() { // do something before execution } }

 

new Setup().execute("parametre");

 

picture-3537-1379713399.jpg
ertucaglar
05.03.2014 - 06:17

Ayrıca, şunu da deneyebilirsin, ancak ne kadar sağlıklıdır emin değilim.

[code]

if (Build.VERSION.SDK_INT >= 9) {

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy);

}

[/code]

Mushfig
06.03.2014 - 01:31
makalelerde bu işe yarayan ve aynı zamanda önerilmeyen yöntem gibi verilmiş
picture-4816-1393230227.jpg
selim.tekinarslan
04.03.2014 - 01:47

Selam,

Bu hata socketini oncreate de yada ana thread de açarsan başına gelir.

Network işlemlerini asynTask içinde yapmalısın ki ana thread etkilenmesin.

http://blog.melihmucuk.com/tag/android-asynctask-kullanimi/

 

kolaylıklar

Mushfig
04.03.2014 - 11:10
Teşekkür ederim. Çok doğru yaklaşım ve çözüm oldu. Asynctask'e parametre aktarma ile ilgili açıklayıcı bir paylaşım eder misiniz? şimdiden teşekkür ederim