在我的Android应用程序中,我有一个服务,在修复间隔后调用一些web服务。 应用程序在前台运行完美并刷新数据,但当用户退出应用程序并使用其他应用程序时,我的应用程序会多次关闭。 为什么这个应用程序在后台运行时强制关闭。
我用于启动服务的代码 -
msgIntent = new Intent(mContext, MyBackgroundService.class);
startService(msgIntent);
在我的主要活动的onDestroy()内部,我有以下代码来停止服务 -
if(msgIntent!=null){
stopService(msgIntent);
}
后台服务调用一些异步任务,每个aync任务onPostExecute()方法在数据库中执行一些insert语句。
我不知道为什么这种力量会发生。
请发表您的意见。
提前致谢。
我的服务代码
@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;
}
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer 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);
}
答案 0 :(得分:1)
实际问题就在这里
if(msgIntent!=null){
stopService(msgIntent);
}
在onDestroy(
中。因为当您关闭应用程序时,上面的代码被调用,这将关闭您的服务。
再次关闭服务后,您将尝试通过调用service + Web服务来插入数据。因此,没有服务对象可以解决它崩溃的原因。
要处理这种情况,您需要对onDestroy()
和{{1}}中的代码进行评论。然后检查/运行它,将解决您的问题。 &安培;你需要通过其他方式停止服务。一步一步走。
答案 1 :(得分:0)
您在 onDestroy()方法停止服务。但服务不依赖于活动。所以试着忽略停止服务。 (或)
try
{
//stop service code
}
catch(Exception e)
{
}
试试这个。