halten Sie die Anwendung im hintergrund läuft
Ich will, dass meine Anwendung läuft im hintergrund
Ich habe eine Anwendung, die sendet den Standort des Benutzers auf unseren server
Ich habe den folgenden code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
updateWithNewLocation(null);
locationManager.requestLocationUpdates(provider, (10*60*1000), 10,
locationListener);
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};
public void updateWithNewLocation(Location location) {
if (location != null) {
Dbhelper helper = new Dbhelper(this);
final SQLiteDatabase db = helper.getWritableDatabase();
long time = System.currentTimeMillis();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
final String curTime = df.format(time);
final double lat = location.getLatitude();
final double lng = location.getLongitude();
final double alt = location.getAltitude();
System.out.println(lat);
System.out.println(lng);
System.out.println(alt);
db.execSQL("INSERT INTO location (longitude,latitude,altitude,tgl_buat) VALUES " +
"('"+lng+"','"+lat+"','"+alt+"','"+curTime+"')");
db.close();
/*Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
@Override
public void run(){
db.execSQL("INSERT INTO location (longitude,latitude,altitude,tgl_buat) VALUES " +
"('121.2149012','-6.217837','0.0','2012-05-07 10:20:01')");
db.close();
}
}, 10*60*1000, 10*60*1000);*/
}
}
Möchte ich meine applicatioin, um die im hintergrund ausgeführt werden. Ich möchte, dass es automatisch gestartet, wenn das Telefon eingeschaltet ist
- Gibt es eine Komponente, bekannt als Dienst in Android. Android documnetation, sagt Ein Dienst ist eine Komponente, die kann lang andauernder Operationen im hintergrund ausgeführt und hat keine Benutzeroberfläche. Für das automatische starten Sie die app, die Sie verwenden können AlarmManager.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine sehr einfache Lösung für Ihr problem ist die Verwendung Service. Es wird Ihnen erlauben, führen Sie verschiedene Aufgaben, während Sie sich im hintergrund, ist Ihre beste Wette für senden der Position in den server - leise.
Lesen diese Antwort für die Hilfe.
Führen Sie Ihre hintergrund-Logik in einem
Service
, und wenn Sie wollen geben eine gute UX Erfahrung (und auch eine höhere Priorität) post einNotification
status-bar (mitNotificationManager
).GrabLocationDetails.java
Verwenden Sie diesen code als Ihre
GrabLocationDetails.java
Können Sie Ihre Anwendung läuft im hintergrund mit
Service
Ich hoffe das link wird Ihnen helfen,
Bitte Lesen Sie die Dokumentation für weitere details
Sollten Sie eine
Service
und einBroadcastReceiver