راهنمایی در مورد دریافت اطلاعات در نرم افزار آنلاین
سلام
دوستان یه برنامه دارم که داخلش چند قسمت برا نمایش عکس و چند قسمت هم برای نمایش متن مرتبط با اون عکس ها هست
این عکس ها و متن هاشون از به صورت انلاین از سرور میگیرم و نشون میدم ( نرم افزار چیزی ذخیره نمیکنه و فقط انلاین اجرا میشه )
حالا نکته ای که هست من نیاز دارم اون عکس و متن تغییر بدم که برای این کار عکس و متن هم نام را در هاست جایگزین میکنم و درست هم عمل میکنه
ولی بعضی اوقات ( البته خیلی به ندرت ) مشکل پیش میاد مثلا با وای فای وصل میشم و با اینکه عکس قبلی از هاست حذف شده و جدید جایگزین شده ، الان به جای عکس جدید همون قبلی دریافت میشه ! ولی اگه همون موقع از اینترنت سیم کارت استفاده کنم درست عمل میکنه ! ( با حذف و نصب مجدد و حذف دیتای برنامه و ری استارت گوشی هم در اون لحظه این مشکل بود ! )
یه سوال اینکه دلیل این مشکل چی میتونه باشه ؟
و سوال دوم راه بهتری برای این کار سراغ دارید ؟
یه چیزی شبیه همین نرم افزار های خبری با این تفاوت که خبری اضافه نمیشه بلکه چند بخش باید با اطلاعت جدید جایگزین بشه !
ممنون
دقیق متوجه نشدم
ولی احتمالا url عکس ثابت میمونه و دستور یا کتابخونه ای که استفاده میکنی داره عکسو catch میکنه و وقتی دوباره میزنی میبینه همون آدرسه از catch میخونه و جدید لود نمیکنه
اگه قضیه همین باشخه باید به دستوری باشه تو کتاب خونت که کچو غیر فعال کنه
مثلا:
.nocatch()
.memoryPolicy(XPolicy.NO_CATCH)
یه همچین چیزایی :)
بله url یا همون لینک عکس ثابت هست و عکسی که داخل هاست گذاشتم تغییر میدم .
از طریق کلاس زیر عکس دانلود میکنم
همون طور که در پست اول گفتم همیشه این مشکل نیست و گاهی به ندرت پیش میاد و شده مثلا اگه همون لحظه ای که این مشکل هست اینترنت وای فای قطع کنم و با اینترنت سیم کارت وصل بشم مشکل حل میشه !
اینم کد صدا زدن و کلاس دریافت عکس :
new DownloadImageTask(imgNew01).execute("http://********/****/****/*****.jpg");
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
روش بهتری برای این کار سراغ ندارید ؟
ممنون
دوستان من به جای کد بالا از کتابخانه پیکاسو استفاده کردم و با غیرفعال کردن کش ، مشکل عکس ها کاملا حل شد
ولی این بار همون مشکل برای متن ها پیش میاد در حالی قبلا این مشکل برای متن ها اصلا نبود و با کوچکترین تغییر روی فایل ، متن دریافتی نیز تغییر میکرد !
ولی الان بعضی مواقع تغییرات متن اعمال نمیشه یا با تاخیر زیاد اعمال میشه و ... !
کد دریافت متن ها اینه : ( اینم لینک سوال همین مورد لینک )
TextView txtSample = .......;
....
....
....
TextW01 W01 = new TextW01(txtSample);
W01.execute("http://******/*****/***/****.html");
private class TextW01 extends AsyncTask<String, Integer, Void>{
TextView txtInput;
public TextW01(TextView txtInput){
this.txtInput = txtInput;
}
String text = "";
protected Void doInBackground(String... params) {
URL url;
try {
url = new URL(params[0]);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream is = con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
text += line;
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
String htmlCode = text;
Spanned spa = Html.fromHtml(htmlCode);
txtInput.setText(spa);
}
}
لطفا راهنمایی کنید ممنون
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .