PDA

View Full Version : کند شدن لود اکتیویتی



raha_jon
سه شنبه 07 مرداد 1393, 21:40 عصر
با عرض سلام و ادب و تبریک عید

من از اینترنت چند تا مقدار میگیرم با httpclient در ضمن وقتی اکتیویتی لود میشه این اتفاق می افته یعنی مقادیر گرفته میشه اما این باعث میشه اکیتیوی خیلی دیر لود شه چطوری می تونم کاری کنم که اکتیویتی لود بشه اما این دریافت ها در پشت صحنه اتفاق بی افته

روش خودم که اینه اینا را بزارم در اسپلش در اسپلش مقادیر گرفته بشه و با اینتنت فرستاده بشه اما با این کار اسپلش هم دیر باز میشه
لطفا راهنمایی کنید

smemamian
سه شنبه 07 مرداد 1393, 21:55 عصر
سلام

از AsyncTask استفاده کنید.

raha_jon
چهارشنبه 08 مرداد 1393, 08:52 صبح
تشکر کد من اینه اما نفهمیدم چطوری با این کار کنم


TextView textMsg, textPrompt, mio,te;
Button st;
String test = "من خوبم";
String nmoq = "";
String nmo = "";
final String textSource = "http://10.0.3.2/r/testamo.html";
final String textSource1 = "http://10.0.3.2/r/testamo2.html";



/** Called when the activity is first created. */
@Override

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//----------------------
textPrompt = (TextView)findViewById(R.id.textprompt);
textMsg = (TextView)findViewById(R.id.textmsg);
mio = (TextView)findViewById(R.id.mio);
st = (Button) findViewById(R.id.button1);
textPrompt.setText("Wait...");
te = (TextView) findViewById(R.id.te);



URL textUrl;
try {
textUrl = new URL(textSource);
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream()));
String StringBuffer;
String stringText = "";
while ((StringBuffer = bufferReader.readLine()) != null) {
stringText += StringBuffer;
}
bufferReader.close();
textMsg.setText(stringText);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
textMsg.setText(e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
textMsg.setText(e.toString());
}

textPrompt.setText("Finished!");


URL textUrl1;
try {
textUrl1 = new URL(textSource1);
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl1.openStream()));
String StringBuffer;
String stringText = "";
while ((StringBuffer = bufferReader.readLine()) != null) {
stringText += StringBuffer;
}
bufferReader.close();
mio.setText(stringText);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
mio.setText(e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();





}








nmoq = mio.getText().toString();
nmo = nmoq + "salam";
Toast.makeText(getBaseContext(), nmo, Toast.LENGTH_LONG).show();
textPrompt.setText("Finished!");
}

}

raha_jon
چهارشنبه 08 مرداد 1393, 09:40 صبح
پیدا کردم روشو خدمت شما هم تقدیم می کنم امید وارم قانونی باشه
شما هم استفاده کنید
کافیه اسپلش بزاریم و در اکتیویتی که اسپلش میره آنجا این کد ها را در اون اکتیویتی بزاریم آن وقت اصلا کند شدن برنامه احساس نمی شه و فرض میشه که این اسپلش برنامه هست داره اجرا میشه بعدا با اینتنت ها می تونین مقادیر را ردو بدل کنید

تقدیم شما:لبخندساده::لبخندساده:

smemamian
چهارشنبه 08 مرداد 1393, 10:49 صبح
پیدا کردم روشو خدمت شما هم تقدیم می کنم امید وارم قانونی باشه
شما هم استفاده کنید
کافیه اسپلش بزاریم و در اکتیویتی که اسپلش میره آنجا این کد ها را در اون اکتیویتی بزاریم آن وقت اصلا کند شدن برنامه احساس نمی شه و فرض میشه که این اسپلش برنامه هست داره اجرا میشه بعدا با اینتنت ها می تونین مقادیر را ردو بدل کنید

تقدیم شما:لبخندساده::لبخندساده:

خیر. شما دارید یک IO روی نخ اصلی (Main Thread) انجام می دهید. در صورتی که باید این عملیات در پس زمینه انجام بشه.
AsyncTask رو جستجو کنید.

raha_jon
چهارشنبه 08 مرداد 1393, 14:49 عصر
جستجو کردم اما نفهمیدم چطوری رو این پیاده کنم کدو هم بالا گذاشتم اما نتونستم پیاده سازی کنم

smemamian
چهارشنبه 08 مرداد 1393, 17:57 عصر
یک کلاس بسازید با هرنامی و سپس از AsyncTask اون کلاس رو مشتق (extends) کنید.
سپس خودش یه تابع override می کنه به اسم doInBackground. داخل این تابع درخواست به
سرور بفرستید یا بگیرید.

لینک (http://stackoverflow.com/questions/8829135/android-http-request-asynctask)

راه امن تر، ساده تر، قابل فهم تر استفاده از volley هست.
لینک (http://barnamenevis.org/showthread.php?461444-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1)