Когда я слушаю push-сообщение от BroadcastReceiver, я могу принимать сообщения, но он делает медленные другие сервисы, например, я отправляю сообщение «Сообщение отправлено» на мой веб-сервис, когда я принимаю push-сообщение, но могу «т отправить на мой веб-сервиса он работает очень медленно, когда я слушаю BroadcastReceiver для тейк сообщения и когда я удалить BroadcastReceiver я могу отправить сообщение на мой веб-сервиса очень FastlyBroadCast Receiver медленно работает с другими службами
package jsonparse;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.androidhive.pushnotifications.MapsActivity;
import com.androidhive.pushnotifications.R;
import com.androidhive.pushnotifications.ServerUtilities;
import com.androidhive.pushnotifications.WakeLocker;
import com.daasuu.ahp.AnimateHorizontalProgressBar;
import com.google.android.gcm.GCMRegistrar;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import static com.androidhive.pushnotifications.CommonUtilities.DISPLAY_MESSAGE_ACTION;
import static com.androidhive.pushnotifications.CommonUtilities.EXTRA_MESSAGE;
import static com.androidhive.pushnotifications.CommonUtilities.SENDER_ID;
public class ListViewAdapter extends BaseAdapter implements OnClickListener{
// Declare Variables
Context context;
LayoutInflater inflater;
ArrayList<HashMap<String, String>> data;
ImageLoader imageLoader;
HashMap<String, String> resultp = new HashMap<String, String>();
//ProgressBar mprogressBar;
TextView fulness;
TextView location_info;
TextView descrip;
JSONObject jsonobject;
private Handler mHandler = new Handler();
private int mProgressStatus=0;
String get_enlem,get_boylam;
double dble_get_enlem,dble_get_boylam;
String dest_city_name,dest_state_name,dest_country_name;
NetworkInfo ni;
ConnectivityManager cm;
String get_location;
String device_id;
String sonuc;
SharedPreferences prefs;
String get_groupID, get_customerID;
String get_desc;
String get_toplam;
// Asyntask
AsyncTask<Void, Void, Void> mRegisterTask;
public static String name;
public static String email;
Context con;
public ListViewAdapter(Context context,
ArrayList<HashMap<String, String>> arraylist) {
this.context = context;
data = arraylist;
imageLoader = new ImageLoader(context);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// Declare Variables
/*
TextView rank;
TextView country;
TextView population;
ImageView flag;
*/
TextView location;
AnimateHorizontalProgressBar progressBar;
Button cop_toplandi;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.listview_item, parent, false);
// Get the position
resultp = data.get(position);
// Locate the TextViews in listview_item.xml
//rank = (TextView) itemView.findViewById(R.id.rank);
//country = (TextView) itemView.findViewById(R.id.country);
//population = (TextView) itemView.findViewById(R.id.population);
//Get Device IMEI number
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
device_id = telephonyManager.getDeviceId();
Log.i("IMEI NUMBER", device_id);
// Getting name, email from intent
Intent i = ((Activity) context).getIntent();
name = i.getStringExtra("get_message_name");
email = i.getStringExtra("email");
Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
// Make sure the device has the proper dependencies.
GCMRegistrar.checkDevice(context);
// Make sure the manifest was properly set - comment out this line
// while developing the app, then uncomment it when it's ready.
GCMRegistrar.checkManifest(context);
context.registerReceiver(mHandleMessageReceiver, new IntentFilter(
DISPLAY_MESSAGE_ACTION));
// Get GCM registration id
final String regId = GCMRegistrar.getRegistrationId(context);
// Check if regid already presents
if (regId.equals("")) {
// Registration is not present, register now with GCM
GCMRegistrar.register(context, SENDER_ID);
} else {
// Device is already registered on GCM
if (GCMRegistrar.isRegisteredOnServer(context)) {
// Skips registration.
// Toast.makeText(getApplicationContext(), "Already registered with GCM", Toast.LENGTH_LONG).show();
} else {
// Try to register again, but not in the UI thread.
// It's also necessary to cancel the thread onDestroy(),
// hence the use of AsyncTask instead of a raw thread.
final Context contextm = context;
mRegisterTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
// Register on our server
// On server creates a new user
ServerUtilities.register(contextm, name, email, regId);
return null;
}
@Override
protected void onPostExecute(Void result) {
mRegisterTask = null;
}
};
mRegisterTask.execute(null, null, null);
}
}
}
};
handler.postDelayed(r, 1000);
prefs = context.getSharedPreferences("login_page", context.MODE_PRIVATE);
get_groupID = prefs.getString("user_groupID", "alınmadı");
get_customerID = prefs.getString("user_customerID", "alınmadı");
if (get_groupID.equals("null")) {
get_groupID = "0";
}
if (get_customerID.equals("null")) {
get_customerID = "0";
}
location = (TextView) itemView.findViewById(R.id.location);
progressBar = (AnimateHorizontalProgressBar) itemView.findViewById(R.id.animate_progress_bar);
fulness = (TextView) itemView.findViewById(R.id.txt_percentage_of_fulness);
descrip = (TextView) itemView.findViewById(R.id.txt_desc);
get_location = resultp.get(MainActivity.COUNTRY);
cop_toplandi = (Button) itemView.findViewById(R.id.secret_button);
cop_toplandi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context.getApplicationContext(),"Başarıyla Gönderildi",Toast.LENGTH_SHORT).show();
new Send_save_status().execute();
}
});
location_info = (TextView) itemView.findViewById(R.id.location_info);
// Locate the ImageView in listview_item.xml
//flag = (ImageView) itemView.findViewById(R.id.flag);
// Capture position and set results to the TextViews
//rank.setText(resultp.get(MainActivity.RANK));
//country.setText(resultp.get(MainActivity.COUNTRY));
//population.setText(resultp.get(MainActivity.POPULATION));
location.setText(resultp.get(MainActivity.COUNTRY));
location_info.setText(resultp.get(MainActivity.Location_info));
String get_descrip = resultp.get(MainActivity.DESCB);
if(get_descrip != "0"){
descrip.setText(resultp.get(MainActivity.DESCB));
cop_toplandi.setVisibility(View.VISIBLE);
}
get_enlem = resultp.get(MainActivity.POPULATION);
get_boylam = resultp.get(MainActivity.FLAG);
get_toplam = resultp.get(MainActivity.Toplam);
//dble_get_enlem = Double.parseDouble(get_enlem);
//dble_get_boylam = Double.parseDouble(get_boylam);
// Capture position and set results to the ImageView
// Passes flag images URL into ImageLoader.class
//imageLoader.DisplayImage(resultp.get(MainActivity.FLAG), flag);
// Capture ListView item click
String a = resultp.get(MainActivity.RANK);
int b = Integer.parseInt(a);
progressBar.setMax(100);
progressBar.setProgress(b);
//progressBar.setProgressWithAnim(b);
fulness.setText("%"+(b*1));
//mprogressBar = (ProgressBar) itemView.findViewById(R.id.progressBar);
//mprogressBar.setProgress(b);
/*
ObjectAnimator anim = ObjectAnimator.ofInt(mprogressBar, "progress", 0, 80);
anim.setDuration(5000);
anim.setInterpolator(new DecelerateInterpolator());
anim.start();
*/
/*
//Get location name from latitude and longitude
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(dble_get_enlem, dble_get_boylam, 1);
} catch (IOException e) {
e.printStackTrace();
}
dest_city_name = addresses.get(0).getAddressLine(0);
dest_state_name = addresses.get(0).getAddressLine(1);
dest_country_name = addresses.get(0).getAddressLine(2);
location_info.setText(dest_city_name + " " + dest_country_name);
*/
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
ni = cm.getActiveNetworkInfo();
if (ni != null && ni.isConnected()) {
Toast.makeText(context,context.getString(R.string.progressdialog_message), Toast.LENGTH_SHORT).show();
// Get the position
resultp = data.get(position);
Intent intent = new Intent(context, MapsActivity.class);
// Pass all data rank
intent.putExtra("level", resultp.get(MainActivity.RANK));
// Pass all data country
intent.putExtra("imei", resultp.get(MainActivity.COUNTRY));
// Pass all data population
intent.putExtra("enlem",resultp.get(MainActivity.POPULATION));
// Pass all data flag
intent.putExtra("boylam", resultp.get(MainActivity.FLAG));
// Start SingleItemView Class
context.startActivity(intent);
}else{
Toast.makeText(context.getApplicationContext(),context.getApplicationContext().getString(R.string.network_connection),Toast.LENGTH_SHORT).show();
}
}
});
return itemView;
}
@Override
public void onClick(View v) {
switch (v.getId()){
}
}
/**
* Receiving push messages
* */
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
// Waking up mobile if it is sleeping
WakeLocker.acquire(context);
//context.sendBroadcast(new Intent("com.google.android.intent.action.GTALK_HEARTBEAT"));
//context.sendBroadcast(new Intent("com.google.android.intent.action.MCS_HEARTBEAT"));
// Showing received message
//lblMessage.append(newMessage + "\n");
//Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show();
//descrip.setText(newMessage);
// Intent go = new Intent(context.getApplicationContext(),IsEmri.class);
//context.startActivity(go);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Acil Durum!!!");
builder.setMessage(newMessage)
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// TODO: handle the OK
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
// Releasing wake lock
WakeLocker.release();
}
};
/*
Send GroupID and customerID every five minutes to services
*/
private class Send_save_status extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
}
@Override
protected Void doInBackground(Void... params) {
//Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.gprs_adres) + address, Toast.LENGTH_LONG).show();
// make sure you close the gps after using it. Save user's battery power
//mGPSService.closeGPS();
StringBuilder str_url = new StringBuilder();
str_url.append("http://78.186.62.169:8090/TrackBinSvc.svc/saveStatus/");
Log.i("str_url1", "" + str_url);
str_url.append(device_id + "/");
Log.i("strl_url2", "" + str_url);
str_url.append(get_location + "/");
Log.i("strl_url3", "" + str_url);
str_url.append("opened" + "/");
Log.i("strl_url3", "" + str_url);
str_url.append(get_groupID + "/");
Log.i("strl_url3", "" + str_url);
str_url.append(get_customerID);
Log.i("strl_url3", "" + str_url);
String str = str_url.toString();
//"http://192.168.0.39:8090/TrackBinSvc.svc/Get_All_Mobile/admin/1234"
try {
jsonobject = JSONfunctions
.getJSONfromURL(str);
// Locate the array name in JSON
sonuc = jsonobject.getString("SendUpdateCordinatesResult");
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
}
}
}
привет, я был сделать весь процесс регистра в обработчике, но я получаю ту же ошибку, что работает медленно, я был обновить мой код, вы можете увидеть вверх. – Diego