app forceclose在后台运行时

时间:2014-08-13 06:28:51

标签: android android-asynctask forceclose background-service

在我的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);
}

2 个答案:

答案 0 :(得分:1)

实际问题就在这里

    if(msgIntent!=null){
        stopService(msgIntent);
    }

onDestroy(中。因为当您关闭应用程序时,上面的代码被调用,这将关闭您的服务。 再次关闭服务后,您将尝试通过调用service + Web服务来插入数据。因此,没有服务对象可以解决它崩溃的原因。

要处理这种情况,您需要对onDestroy()和{{1}}中的代码进行评论。然后检查/运行它,将解决您的问题。 &安培;你需要通过其他方式停止服务。一步一步走。

答案 1 :(得分:0)

您在 onDestroy()方法停止服务。但服务不依赖于活动。所以试着忽略停止服务。 (或)

try
{
//stop service code
}
catch(Exception e)
{
}

试试这个。