我在我的android應用程序中有後臺服務,我從MainActivity onResume()方法啓動服務,並且它工作正常。但是當用戶按Home按鈕時,如何停止服務。因爲當前時用戶按Home鍵,然後應用移動到後臺,然後用戶打開一些其他的應用程序,然後一段時間我的服務方法被調用,應用力stop.Below是我開始服務代碼後 -停止後臺服務當應用程序轉到後臺
Intent msgIntent = new Intent(mContext, MyBackgroundService.class);
startService(msgIntent);
在此先感謝。
EDITED
在我的服務我用下面的代碼 - 在我的活動
public void callAsynchronousTask() {
final Handler handler = new Handler();
timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
callWebservice();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
};
timer.schedule(doAsynchronousTask, START_DELAY, DELAY);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
callAsynchronousTask();
return Service.START_NOT_STICKY;
}
@Override
public void onCreate() {
mContext = this;
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
if(timer!=null){
timer.cancel();
}
stopSelf();
}
我用下面的代碼一站式服務 -
@Override
protected void onStop() {
try{
stopService(new Intent(this, MyBackgroundService.class));
isServiceRunning = false;
}
catch(Exception e){
e.printStackTrace();
}
super.onStop();
}
@Override
protected void onPause() {
try{
stopService(new Intent(this, MyBackgroundService.class));
isServiceRunning = false;
}
catch(Exception e){
e.printStackTrace();
}
super.onPause();
}
,但我的服務運行,而我使用一些其他的應用程序,它強制停止應用程序。從後臺服務我打電話給一些web服務,然後將服務響應存儲在數據庫中。
請檢查更新的問題。因爲我已經嘗試了您的代碼,但仍然應用程序崩潰,而應用程序在後臺和其他應用程序正在運行。 – Ravi 2014-10-18 12:17:27