これは何度も尋ねられています。私は多くの回答を見て、これを適用しましたが、何も役立たないようです。アプリケーションが破棄されると、Androidはサービスを再作成します
これは
startService(new Intent(MavsMainActivity.this, LocationUpdateService.class));
私はアプリケーションの起動時にサーバを起動していますどのようにマニフェスト
<service android:name=".myservices.services.LocationUpdateService"
android:process=":locationService"
/>
私は強制的にアプリケーションを閉じたときに、それは再びサービスのonCreate()
をトリガします。私はreturn START_STICKY
とreturn START_NOT_STICKY
を試しましたが、Application onDestroy
でサービスを再開し、ユーザーがアプリケーションを破棄した後にアプリケーションを再起動すると再起動します。
これは私のサービスクラスです。サービスをバックグラウンドで実行し続けることで、ユーザーがアプリケーションを破壊しないようにする方法を教えてください。
@Override
public void onCreate() {
if (isGooglePlayServicesAvailable()) {
/* min dist for location change, here it is 10 meter */
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
Toast.makeText(getApplicationContext(), "Service created", Toast.LENGTH_SHORT).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand: ");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(BACKGROUND_INTERVAL);
mLocationRequest.setFastestInterval(30000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
mLocationRequest.setSmallestDisplacement(20);
sendOfflineData();
Toast.makeText(getApplicationContext(), "onStart Called", Toast.LENGTH_SHORT).show();
return START_STICKY ;
}
IBinderを使用してバックグラウンドプロセスを継続します –
THanksマニフェストファイルにプロセスを追加した後にアプリケーションがクラッシュする – Kirmani88
できません。これはAndroidのデザインです。あなたのアプリがメモリを要求するシステムかユーザー自身によって殺されると、システムはサービスを再開します。 – Wizard