مشکل عجیب!!
سلام دوستان و اساتید عزیز
من یه مشکل عجیبو غریب دارم ممنون میشم راهنمایی م کنید
من یه سری عکس که حجمشون زیاد نیست رو سرور دارم و طبق آموزش ImageOptimization استاد این عکسا رو از روی سرور می خونم و داخل یه لیست ویو که خودم ساختم و حدودا 9 تا ویو داره میزارم، وختی روی Emulator (اگه درست نوشته باشم :) ) اجرا میکنم هیچ مشکلی ندارم و برنامه بدون کرش اجرا میشه ولی وختی برنامه رو میریزم رو گوشی خودم که رمش یک گیگه و نصب می کنم و اجرا می کنم دفه اول که فایلای عکس روی موبایل دانلود نشده برنامه درست اجرا میشه و عکسا میاد ولی وختی از برنامه کامل خارج میشم و دوباره اجراش می کنم برنامه کرش می کنه :(
اول فک میکردم بخاطر اینه که عکسا حجش زیاده ولی خیلی حجمشون آوردم پایین طوری که کلا شد 70 کیلو بایت ولی بازم مشکل حل نشد و برنامه م کرش میکنه
اینم کداها:
public static ArrayAdapter<StructCourse> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
// ActionbarHidder.hide(this);
getActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#26ae90")));
final ListView lstContent = (ListView) findViewById(R.id.lstContent);
adapter = new AdapterCource(G.cources);
lstContent.setAdapter(adapter);
fillCourceFromServer();
adapter.notifyDataSetChanged();
}
private void fillCourceFromServer() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
String result = WebService
.readUrl(
"http://192.168.1.4/EUNI-Demo/cource.php?tag=get_cource",
null);
try {
JSONArray json = new JSONArray(result);
for (int i = 0; i < json.length(); i++) {
StructCourse cource = new StructCourse();
JSONObject obj = json.getJSONObject(i);
cource.imgCourse = obj.getString("img");
cource.title = obj.getString("title");
cource.teacher = obj.getString("teacher");
cource.desc = obj.getString("desc");
cource.like = obj.getString("like");
cource.comment = obj.getString("comment");
cource.downloaded = obj.getString("downloaded");
cource.price = obj.getString("price");
G.cources.add(cource);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
t.start();
}
در این حالت وختی برنامه رو روی گوشی اجرا می کنم لیستو بهم نشون نمیده(اصلا) ولی وختی گوشی رو میچرخونم لیست نمایش داده میشه ولی اطلاعات دوبار میاد یعنی یه بار عکسا از اول تا اخر و دفه دوم دوباره میان ولی وختی اون تابع نوتیفای دیتاست چنج رو میارم توو ترد برنامه کرش میکنه(روی گوشی البته)
اینم کد حالت دوم که برنامه کرش میکنه:
private void fillCourceFromServer() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
String result = WebService
.readUrl(
"http://192.168.1.4/EUNI-Demo/cource.php?tag=get_cource",
null);
try {
JSONArray json = new JSONArray(result);
for (int i = 0; i < json.length(); i++) {
StructCourse cource = new StructCourse();
JSONObject obj = json.getJSONObject(i);
cource.imgCourse = obj.getString("img");
cource.title = obj.getString("title");
cource.teacher = obj.getString("teacher");
cource.desc = obj.getString("desc");
cource.like = obj.getString("like");
cource.comment = obj.getString("comment");
cource.downloaded = obj.getString("downloaded");
cource.price = obj.getString("price");
G.cources.add(cource);
adapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
t.start();
}
لطفا راهنمایی کنید موندم چی کار کنم!!
سلام دوستان
من مشکلو پیدا کردم و برنامه م درست شد
کدو جدید با استفاده از یه کلاس جدید نوشتم و کلاس رو از AsyncTask ارث بری کردم و چون این کلاس ترد خودشو داره برنامه کرش نمیکنه.
جوابشو گذاشتم شاید دوستان مشکل مشابه داشته باشن
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .