آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ارتباط با سرور و دریافت اطلاعات از سرور *فقط یکبار*

mosafer  10 سال پیش  10 سال پیش
0 0

با سلام

من برنامه ای دارم که به وسیله جیسون اطلاعات رو از سرور دریافت میکنم.

من از سرور سه رشته میگیرم که یه تیتر خبر و یه متن خبر به همراه عکس خبر رو دریافت میکنم.

همچنین من یه صفحه اصلی دارم که درون اون 4 فرگمنت وجود داره .. که قسمت دریافت اخبارش در فرگمنت دوم وجود داره.

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

البته اگر روی Wait کلید کنم میرم و در پیج تازه ها اخبار رو میگیرم. اینم بگم هر خبر یه عکس داره که بیشتر کندی دریافت اطلاعات به خاطر همینه. خب حالا چکار باید بکنم که این کندی رو از بین ببرم. و همچنین وقتی فرگمنت خبر رو باز میکنم هیچی توش نیست که میخوام بجای اون تا قبل از دریافت اطلاعات از سرور یه پروگراس بار باشه ولی نمدونم چکار کنم . حتی پروگراس رو گذاشتم ولی خوب اجرا نمیشه.. کد در یافت اطلاعات رو در قسمت پایین براتون میذارم. ببینید مشکلم کجاست.

 تازه این برنامه رو شروع کردم و این اولین قسمتش هست. حالا اگه قسمتای دیگش هم بخوان اینجوری کند بمونن که دیگه خیلی بد میشه.

یه چیز دیگه چطور میتونم فقط یه بار اطلاعات یک صفحه رو از سرور بگیرم و دفعاتی که از اون صفحه مربوطه خارج شدم و بعد از مدتی دوباره وارد اون صفحه شدم دیگه نره دوباره از سرور اطلاعات رو بگیره و درون خودش ذخیره کنه..

خیلی حرف زدم .ممنون میشم راهنماییم کنید.

 

   @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.layout_news, null);

editTextSerch = (EditText) layout.findViewById(R.id.Search);

listView = (ListView) layout.findViewById(R.id.listView);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

adapter.notifyDataSetChanged();

listView.setDivider(null);//پاک کرد خط لیست ویو
listView.setDividerHeight(0);//پاک کرد خط لیست ویو

// Restore previous state (including selected item index and scroll position)
if(state != null) {
Log.d("save : ", "trying to restore listview state..");
listView.onRestoreInstanceState(state);
}


editTextSerch.addTextChangedListener(new TextWatcher() {

@Override
public void afterTextChanged(Editable arg0) {

String text = editTextSerch.getText().toString().toLowerCase(Locale.getDefault());
adapter.filter(text);
}


@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}


@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
});

new GetContacts().execute();

return layout;
}



 private class GetContacts extends AsyncTask<Void, Void, Void> {

@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();

}

@Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance

ServiceHandler sh = new ServiceHandler();

// Making a request to url and getting response
String jsonStr = sh.makeServiceCall("http://ws.acsandemo.ir/api/acsan/1", ServiceHandler.GET);

Log.d("Response: ", "> " + jsonStr);

if (jsonStr != null) {
try {
G.tasks.clear();
JSONArray jsonObj = new JSONArray(jsonStr);


// looping through All Contacts
for (int i = 0; i < jsonObj.length(); i++) {

JSONObject c = jsonObj.getJSONObject(i);


NewsMain task = new NewsMain(jsonStr, jsonStr, jsonStr);
// task.NewsId = Integer.parseInt(c.getString("NewsId"));
task.NewsTitr = c.getString("NewsTitle");
task.NewsText = c.getString("NewsText");
task.NewsLogo = c.getString("NewsPic");

Log.i("log : ", task.NewsTitr);
G.tasks.add(task);

}


} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}

return null;
}

protected void onPostExecute(Void params){
super.onPostExecute(params);
pDialog.dismiss();

}

}

 

0 0
کسی نیست جواب بده!! حالا من یه سوال دیگه ای هم داشتم. اینکه بار اولی که پیج میکنم در فرگ خبر چیزی نشون داده نمیشه ولی وقتی دو فرگ دیگه رو پیج میکنم و بعد دوباره بر میگردم به فرگ خبر لیست ویوم نشون داده میشه. اون کندی هم واسه خاطر عکسها بود. عکسی که در لیست ویو نشون داده میشه اندازش رو در سرور چقد باید بدیم که برنامه با کنی اجرا نشه؟ (10 سال پیش)
0 0
لاگ را بزار (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .