بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
استفاده از AsyncTask در پروژه Notes (حل شد)
سلام. میخواستم بدونم اگر بخواهیم از AsyncTask در پروژه Notes استفاده بکنیم دقیقا کجاهای برنامه باید چیکار کنیم.
ممنون میشم کمکم کنید.
0
0

شما باید کلاس وب سرویس رو با استفاده از Async Task بنویسید که عملیات اتصال به وب سرویس از طریق متد doInBackground انجام بشه اما به نظر من با توجه به ساختار کلی کلاس Async Task تو این پروژه بهتره از Thread استفاده کنید چون استفاده از Async Task مقداری تو این برنامه کارو الکی پیچیده میکنه (هرچند که به نظر من کلا Async Task ازون دست کلاسهایی که باعث میشه مجبور شیم لقمه رو الکی دو سرمون بچرخونیم). (10 سال پیش)
0
0

خوب Thread رو کجاش قرار بدم... آخه شنیدم Thread خیلی دردسر داره واسه خودش... (10 سال پیش)
+1
0

این رو ببین لینک (10 سال پیش)
0
0

من هنوز متوجه نشدم دقیقا تو کدوم کلاسا باید Async task رو وارد کنم هر چی که فکر میکنم (10 سال پیش)
0
0

AsyncTast نوعی Thread هست که متد شروع ، پایان و در حین کار داره ؛ بیشتر برای خواندن خروجی وب سرویس کارایی داره و کارهای مشابه (10 سال پیش)
0
0

خوب پروژه notes هم خروجی وب سرویس رو میخونه ... خواهشا کسی اگه میتونه کمک کنه کارم گیره... (10 سال پیش)
0
0

سلام
من یه سوال فنی دارم
تو آموزش ها من آموزش AsyncTask رو ندیدم البته تا بخش 15
تو آموزش ها آموزشش هست عایا؟؟ (9 سال پیش)
برای این سوال 5 پاسخ وجود دارد.

پاسخ به سوال
Alireza_Ghamkhar
10 سال پیش
0
0
این یکی از کدها هستش تو پروژه که نمیدونم چجوری با Async task یا Thread حلش کنم.
کد اولی که برای کلاس Webservice
public static String readUrl(String url,ArrayList params) { try { HttpClient client = new DefaultHttpClient(); HttpPost method = new HttpPost(url); if(params!=null){ method.setEntity(new UrlEncodedFormEntity(params)); } HttpResponse response = client.execute(method); InputStream inputStream = response.getEntity().getContent(); String result = convertInputStreamToString(inputStream); return result; } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
کلاس دوم هم که Commands هستش...
public static void readData() { String result = WebService.readUrl("http://***.php?action=read",null); if(result != null){ try { G.tasks.clear(); JSONArray tasks = new JSONArray(result); //for(int i = 0 ; i<tasks.length(); for(int i = tasks.length()-1 ; i>=0;i--){ JSONObject object = tasks.getJSONObject(i); StructTask task = new StructTask(); task.id = object.getLong("task_id"); task.title = object.getString("work_title"); task.desc = object.getString("work_desc"); task.done = object.getInt("work_done") == 1 ?true:false; G.tasks.add(task); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* public void sendData(ArrayList params){ WebService.readUrl("***.php",params); }*/ public static void updateData(ArrayList params){ WebService.readUrl("***.php?",params); } public static void removeData(ArrayList params){ WebService.readUrl("***.php?",params); } public static void insertData(ArrayList params) { WebService.readUrl("***.php",params); }

پاسخ به سوال
javac
10 سال پیش
+2
0
کد رو با استفاده از یک listener اصلاح کردم.
این وب سرویس :
public static interface listener { public void onReceived(String string); }
public static void readUrl(final String url, final ArrayList<NameValuePair> params, final listener listener) {
Thread thread = new Thread(new Runnable() { @Override public void run() { try { HttpClient client = new DefaultHttpClient(); HttpPost method = new HttpPost(url); if (params != null) { method.setEntity(new UrlEncodedFormEntity(params)); } HttpResponse response = client.execute(method); InputStream inputStream = response.getEntity().getContent(); String result = convertInputStreamToString(inputStream); if (listener != null) { listener.onReceived(result); } } catch (ClientProtocolException e) { Log.v("LOG", "readURL1" + e); } catch (IOException e) { Log.i("LOG", "readURL2" + e); } } }); thread.start(); }
اینم جایی هست که وبسرویس رو فراخوانی میکنیم:
WebService.listener listener = new listener() { @Override public void onReceived(String data) { /// do stuff ... } }; WebService.readUrl("http://192.168.1.100/note-server/service.php?action=update", params, listener);
به اون return null و return result خیلی گیر میده چرا که میگه Void method can not return a value تازه این بعد از زمانی هستش که یه سری پارامتر ها رو مجبور میکنه فاینال کنیم. حالا من اومدم همین ترد رو روی دستور ReadData() تو Commands اجرا کردم و به سلامتی اومد بالا... فقط فکر میکنم همین کار را برای متد های آپدیت و دیلیت و ... هم بکنم. فقط میمونه اینکه بتونم یه Loading بزارم واسش و چک کنم اگه نت قطعه کلا بیخیال این کارا بشه... مرسی دوست عزیز از وقتی که برام گذاشتی و راهنمایی خوبت که فکر میکنم منو به جواب رسوند... (10 سال پیش)
ببخشید اما خروجی این خط string نیست WebService.readUrl( لینک params, listener);
چطور بریزمش توی result
(9 سال پیش)

پاسخ به سوال
سعید
9 سال پیش
0
0
این تابع readdata هستش
publicstaticvoid readData(){String result =WebService.readUrl("http://***.php?action=read",null); if(result !=null){ try{ G.tasks.clear(); JSONArray tasks =newJSONArray(result);//for(int i = 0 ; i<tasks.length(); for(int i = tasks.length()-1; i>=0;i--){ JSONObjectobject = tasks.getJSONObject(i);StructTask task =newStructTask(); task.id =object.getLong("task_id"); task.title =object.getString("work_title"); task.desc =object.getString("work_desc"); task.done=object.getInt("work_done")==1?true:false; G.tasks.add(task);}}catch(JSONException e){// TODO Auto-generated catch block e.printStackTrace();} } }
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .