我创建了一个将用户位置发送到服务器的应用程序..它使用异步任务(doInBackground 和 onPostExecute 方法)在后台运行...但运行速度非常慢..在编码中我使用 Thread.sleep(300000) 进行间隔5 分钟...我认为应用程序停止运行..
YasarKhan.java
Location location; // location
double latitude; // latitude
double longitude; // longitude
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 1000; // 1000
// meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 20; // 20 minute
// Declaring a Location Manager
protected LocationManager locationManager;
boolean done = true;
// public YasarKhan(Context context) {
// this.mContext = context;
//
//
// }
public void gpsTraking() {
// check if GPS enabled
if (true) {
stAdd = "";
double latitude = getLatitude();
double longitude = getLongitude();
Geocoder gc = new Geocoder(getBaseContext());
try
{
List<Address> list = gc.getFromLocation(latitude, longitude, 2);
Address a = list.get(0);
for (int i = 0; i <= a.getMaxAddressLineIndex(); i++) {
stAdd = stAdd + "\n " + a.getAddressLine(i);
}
stAdd = stAdd + " " + a.getLocality() + "\n"
+ a.getFeatureName();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void passing()
{
new SendFeedback().execute(imei,simSerialNumber,stAdd,currentTime);
}
class SendFeedback extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... paramArrayOfParams)
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("strIMEINumber", paramArrayOfParams[0]);
request.addProperty("strSIMNumber", paramArrayOfParams[1]);
request.addProperty("strAddress", paramArrayOfParams[2]);
request.addProperty("strTime", paramArrayOfParams[3]);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.ENC;
envelope.setOutputSoapObject(request);
System.setProperty("http.keepAlive", "false");
try
{
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
// SoapObject result = (SoapObject) envelope.getResponse();
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
String resultData = response.toString();
Log.d("response", resultData);
return resultData;
}
catch (Exception e)
{
Log.d("My Error", "" + e.getMessage());
}
return resultData;
}
@Override
protected void onPostExecute(String result)
{
Log.d("strResult", result);
super.onPostExecute(result);
}
}
}
MyReceiver.java
package com.example.yasar;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver {
public static final String TAG = "com.example.gpstraking";
@Override
public void onReceive(Context context, Intent intent)
{
try
{
Intent serviceIntent = new Intent(context, YasarKhan.class);
context.startService(serviceIntent);
}
catch(Exception e)
{
Log.e("My Service Error",e.getMessage());
}
}
}
MainActivity.java
package com.example.yasar;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("naveeeen","kushwaaahaACTIVITY");
Intent serviceIntent = new Intent(this, YasarKhan.class);
this.startService(serviceIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}