gpt4 book ai didi

android - 当应用程序进入后台时停止后台服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:44 25 4
gpt4 key购买 nike

我的 android 应用程序中有后台服务,我从 MainActivity onResume() 方法启动服务并且它工作正常。但是当用户按下主页按钮时我如何停止服务。因为当前当用户按下主页按钮然后应用程序移动到背景然后用户打开其他一些应用程序然后在一段时间后我的服务方法被调用并且应用程序强制停止。下面是我的启动服务代码 -

Intent msgIntent = new Intent(mContext, MyBackgroundService.class);
startService(msgIntent);

提前致谢。

已编辑

在我的服务中,我使用以下代码 -

 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();
}

在我的 Activity 中,我使用以下代码停止服务 -

@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();
}

但是我的服务在我使用其他应用程序时运行,它强制停止应用程序。我从后台服务调用一些网络服务,然后将服务响应存储在数据库中。

最佳答案

在onPause()和onStop()中停止服务

mContext.stopService(new Intent(mContext,
MyBackgroundService.class))

关于android - 当应用程序进入后台时停止后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com