CodeforLife
شنبه 21 اسفند 1395, 01:00 صبح
سلام دوستان من در قسمتی از پروژه می خوام که در background برنامه , یه سری اطلاعات برن سمت سرور و این در یه بازه زمانی مثلا یه ثانیه یه ثانیه باشه.
این کد رو نوشتم که اجرا نمی شه یعنی اصلا در تابع onrecieve()نمیره که بخواد به سمت سرور درخواست بده ...
کدها رو میگذارم میشه لطفا راهنمایی کنید ...
Intent intent = new Intent(getContext(), ApiManager.class);
//get intent extras
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager)getContext().getSystemService(Contex t.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 1000, pendingIntent);
این کدها در یه فرگمنت هست که باید بگه هر ثانیه یه بار برو تو کلاس ApiManager و درخواست بده
public class ApiManager extends BroadcastReceiver {
public ApiManager() {
interviewPartner = new InterviewPartner();
deliveryPartner = new DeliveryPartner();
deliveryPartners = new ArrayList<DeliveryPartner>();
deliveryBikes = new ArrayList<DeliveryBike>();
}
@Override
public void onReceive(Context context, Intent intent) {
setReportOfPartnerInServer();
}
private void setReportOfPartnerInServer() {
//make object in interviewpartner
makeJsonObjectsToSend(deliveryPartner);
//request
deliveryPartner.jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
"http://192.168.43.206/project-server/Request.php?action=ReportDeliveryLocation",
deliveryPartner.jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println("Response:" + response);
try {
actionType = ActionType.REPORT_LOCATION;
responseListener.onSuccesResponse(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Response:" + error);
actionType = ActionType.REPORT_LOCATION;
responseListener.onErrorResponse(error);
}
});
requestTimeOut(deliveryPartner.jsonObjectRequest);
G.getInstance().addToRequestQueue(deliveryPartner. jsonObjectRequest);
}
این کدها هم در کلاس apimanager هست که از braodcastreciver ارث بری میکنه و میگه که یه تابع رو باید در onrecieve () اجرا کنه ...
مسئله اینجاست که اصلا در onrecieve نمیره
من رو از راهنمایی خودتون دریغ نفرمایید دوستان عزیز ...متشکرم
این کد رو نوشتم که اجرا نمی شه یعنی اصلا در تابع onrecieve()نمیره که بخواد به سمت سرور درخواست بده ...
کدها رو میگذارم میشه لطفا راهنمایی کنید ...
Intent intent = new Intent(getContext(), ApiManager.class);
//get intent extras
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager)getContext().getSystemService(Contex t.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 1000, pendingIntent);
این کدها در یه فرگمنت هست که باید بگه هر ثانیه یه بار برو تو کلاس ApiManager و درخواست بده
public class ApiManager extends BroadcastReceiver {
public ApiManager() {
interviewPartner = new InterviewPartner();
deliveryPartner = new DeliveryPartner();
deliveryPartners = new ArrayList<DeliveryPartner>();
deliveryBikes = new ArrayList<DeliveryBike>();
}
@Override
public void onReceive(Context context, Intent intent) {
setReportOfPartnerInServer();
}
private void setReportOfPartnerInServer() {
//make object in interviewpartner
makeJsonObjectsToSend(deliveryPartner);
//request
deliveryPartner.jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
"http://192.168.43.206/project-server/Request.php?action=ReportDeliveryLocation",
deliveryPartner.jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println("Response:" + response);
try {
actionType = ActionType.REPORT_LOCATION;
responseListener.onSuccesResponse(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Response:" + error);
actionType = ActionType.REPORT_LOCATION;
responseListener.onErrorResponse(error);
}
});
requestTimeOut(deliveryPartner.jsonObjectRequest);
G.getInstance().addToRequestQueue(deliveryPartner. jsonObjectRequest);
}
این کدها هم در کلاس apimanager هست که از braodcastreciver ارث بری میکنه و میگه که یه تابع رو باید در onrecieve () اجرا کنه ...
مسئله اینجاست که اصلا در onrecieve نمیره
من رو از راهنمایی خودتون دریغ نفرمایید دوستان عزیز ...متشکرم