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

سرعت در لود داده ها

125847  9 سال پیش  9 سال پیش
0 0

سلام

میخواستم بدونم زمانی که بررسی اتصال به اینترنت رو وارد می کنم چی کار کنیم که سرعت لود کم نشه. 

اصلا برای اینکه سرعت لودینگ بالا بره بایید چی اکار کرد.

نمونه کد زیر بررسی اتصال به اینترنت رو میگره

public  class home_agahi_server  extends AsyncTask<String,Void,String> {

private Context c;
private Activity ac;

private String state_id;
private String lim;
private RecyclerView rec;


private final ReentrantLock lock = new ReentrantLock();
private final Condition tryAgain = lock.newCondition();
private volatile boolean finished = false;


public home_agahi_server(Context c,Activity ac,String lim
){
this.c=c;
this.ac=ac;

this.lim=lim;



}

@Override
protected void onPreExecute() {
super.onPreExecute();


}

@Override
protected String doInBackground(String... strings) {


try {
String data = URLEncoder.encode("get_post", "UTF-8") + "=" + URLEncoder.encode("true", "UTF-8");
// data+="&"+ URLEncoder.encode("state_id", "UTF-8")+"="+URLEncoder.encode(state_id,"UTF-8");
data += "&" + URLEncoder.encode("lim", "UTF-8") + "=" + URLEncoder.encode(lim, "UTF-8");


//
URL url = new URL(MainActivity.url + "post.php");
URLConnection connect = url.openConnection();
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();

errorMessage = urlc.getResponseCode() == 200 ? "Successful Connection" : "Internet Error";
if (urlc.getResponseCode() == 200) {

connect.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(connect.getOutputStream());
wr.write(data);
wr.flush();
wr.close();

//
InputStreamReader in = new InputStreamReader(connect.getInputStream());
BufferedReader reader = new BufferedReader(in);
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);

}
return sb.toString();
}


} catch (SocketTimeoutException e) {
errorMessage = "Connection Error1";
return "err1";

} catch (MalformedURLException e) {
errorMessage = "Connection Error2";
return "err1";

} catch (IOException e) {
errorMessage = "Connection Error3";
return "err1";

}

return "";




}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);







if(s.equals("err1") ||s.equals("")){
final android.app.AlertDialog OptionDialog = new android.app.AlertDialog.Builder(getActivity()).create();
LayoutInflater factory = LayoutInflater.from(getActivity());
final View f = factory.inflate(R.layout.row_connect, null);
OptionDialog.setView(f);
MainActivity.K= Typeface.createFromAsset(getActivity().getAssets(), "fonts/k.ttf");
MainActivity.T=Typeface.createFromAsset(getActivity().getAssets(),"fonts/t.ttf");
TextView txt_1= (TextView) f.findViewById(R.id.connect_txt1);
TextView txt_2= (TextView) f.findViewById(R.id.connect_txt2);
OptionDialog.setCancelable(false);
txt_1.setTypeface(MainActivity.K);
txt_2.setTypeface(MainActivity.K);
txt_1.setText("عدم دسترسی به اینترنت ");

txt_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OptionDialog.dismiss();
limit=0;
dd=new home_agahi_server(getActivity(),getActivity(),limit+"");
dd.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
}
});

OptionDialog.show();

}else {

swipeContainer.setVisibility(View.VISIBLE);
linlaHeaderProgress.setVisibility(View.GONE);

JSONArray arr = null;
JSONObject ob = null;

try {
arr = new JSONArray(s);
for (int i = 0; i < arr.length(); i++) {

ob = arr.getJSONObject(i);

_name.add(ob.getString("title"));
_id.add(ob.getString("id"));
_menu_order.add(ob.getString("order"));
_price.add(ob.getString("price"));
_img.add(ob.getString("img"));
_time.add(ob.getString("time"));




}

adapter = new

AgahiRecyclerAdapter(getActivity().getApplicationContext(), getActivity()
, _name
, _id
, _img,

_price

, _time
, _menu_order


);


Display display = getActivity().getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);

float density = getResources().getDisplayMetrics().density;
float dpWidth = outMetrics.widthPixels / density;
int columns = Math.round(dpWidth / 300);


final GridLayoutManager mLayoutManager = new GridLayoutManager(getActivity(), columns);
/* final PreCachingLayoutManager mLayoutManager = new PreCachingLayoutManager(getActivity());
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

mLayoutManager.setExtraLayoutSpace(DeviceUtils.getScreenHeight(getActivity()));
*/

agahi_recycler.setLayoutManager(mLayoutManager);
agahi_recycler.setHasFixedSize(true);
agahi_recycler.setItemViewCacheSize(20);
agahi_recycler.setDrawingCacheEnabled(true);
agahi_recycler.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);

agahi_recycler.setAdapter(adapter);


agahi_recycler.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
a = dy;


}


@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
int totalItemCount = mLayoutManager.getItemCount();
int lastVisibleItem = mLayoutManager.findLastVisibleItemPosition();

if (newState == RecyclerView.SCROLL_STATE_IDLE && a > 0 && scroll == 0) {
scroll = 1;
// lay2.setBackgroundResource(R.drawable.border_bg3);

if (limit < total) {
limit += 12;

mTask = new home_agahi3_server(getActivity().getApplicationContext(), getActivity(),
limit + "", adapter
);
mTask.executeOnExecutor(mTask.THREAD_POOL_EXECUTOR, "");
//Call your method here for next set of data
}else{
lay2.setVisibility(View.GONE);
}
}


}
});


} catch (Exception e) {
//Toast.makeText(c,"errors in json",Toast.LENGTH_SHORT).show();
}
}

}

}
 برای این سوال پاسخی وجود ندارد.

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