بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
RssReader (حل شده)
با توجه به این که در اندروید بالاتر از 4 نمیشه توی MainThread از اتصالات شبکه استفاده کرد پروژه RssReader ی که استاد زحمت کشیدن و آموزش دادن دچار خطا میشه. چند راه حل وجود داره که من یکیشو با کد میگم و یکی رو هم اساتید لطف کنن و باهم مشکلش رو حل کنیم.
راه حل اول:
توی اکتیویتی کد های زیر رو بنویسیم:
int SDK_INT = android.os.Build.VERSION.SDK_INT;
if (SDK_INT > 8)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThrea
}
روش دوم:
استفاده از AsyncTask:
من این روش رو تست کردم ولی همچنان مشکل وجود داره و اررور همون اررور قبلیه:
android.os.NetworkOnMainThreadException
روش اول یک راه حل موقت هست و پیشنهاد میکنم کسی استفاده نکنه ولی برای تست صحیح بودن عملکرد RssReader کاربرد داره.
نمونه کد روش دوم:
@Override
protected RssParser doInBackground(String... params) {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
URL sourceUrl = new URL(url);
rssHandler = new RssHandler();
xr.setContentHandler(rssHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
}
catch (ParserConfigurationException e) {
e.printStackTrace();
}
catch (SAXException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return this;
}
این روش باید درست کار کنه ولی متاستفانه اینطور نیست، اساتید کسی راه حل دیگه ای داره؟
0
0
کلا یه ترد جدا بسازید برای ارتباط با سرور و خوندن اطلاعات و همه کار هاتون رو اونتو انجام بدید . هم توی نسخه 4 به بالا کار میکنه هم در نسخه های قدیمی اندروید . (11 سال پیش)
0
0
کار نمیکنه محمد حسین جان، تست کردم (11 سال پیش)
0
0
ببیند استفاده از ترد هیچ فرقی نمیکنه چه در نسخه اندروید قدیمی باشه چه در جدید ربطی به ترد نداره . (11 سال پیش)
0
0
مستندات گوگل رو مطالعه کنید، تفاوت های زیادی هست. (11 سال پیش)
0
0
همون روش دوم که گفته بودم درسته فقط اگر از یک لیستنر استفاده کنید درست میشه. (11 سال پیش)
0
0
خب ، طبیعتا شما باید از لیسنر استفاده کنید ، چون توی ترد ما نمیتونیم خروجی رو مستقیم بر گردون کنیم و نیاز به لیسنر هست . (11 سال پیش)
0
0
دوست عزیز چی جوری حلش کردی ؟ لطفا کدت رو قرار بده که دوستان دیگه هم بتونن استفاده کنن با تشکر. (11 سال پیش)
+1
0
شما یوزر معمولی هستی شهریار جان، حتی اگر من نمونه کد هام رو در پاسخ درج کنم نمیتونی ببینی! پروژه مال شرکته و نمیتونم سورس قرار بدم ولی وقتم که آزاد شد یک Helper براش مینویسم و قرار میدم. (11 سال پیش)
0
0
من کاربر ویژه ام ؟میتونم ببینم!! مرسی. (11 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .