无法停止服务

时间:2014-02-15 12:56:28

标签: android service android-service

我正在开发应用程序,通过POST请求启动从服务器获取信息的服务。 在我的情况下,用户可以取消加载数据(当他选择ListView中的项目开始新的活动,我在线程中启动服务。)

现在,如果用户按Back返回previos活动,我调用了stopService(intent)。调用方法onDestroy(),但从Internet加载数据不会停止

我的服务起点:

private void makeNewSync() {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                Intent intent =new Intent(getApplicationContext(),NewsLoaderService.class);
                intent.putExtra("NEW_GLOBAL_ID", newGlobalId);
                startService(intent);
            }
        });
        thread.setPriority(10);
        thread.start();
    }

我的后退按钮听众:

     @Override
            public void onBackPressed() {
                if (isFullScreen) {
                    changeFullScreenMode(View.GONE);
                } else {
                    stopService(new Intent(getApplicationContext(),NewsLoaderService.class));
                    super.onBackPressed();
                }
            }

我服务的onDestroy()方法:

@Override
    public void onDestroy() {
        Log.d("MyLOg", "loader service is: " + isRunning + " stopped.");
        if (isRunning) {
            isRunning = false;
        }
        super.onDestroy();
    }

2 个答案:

答案 0 :(得分:0)

当您使用stopService方法停止服务时,如果您的服务当前正在运行,这将调用您的服务的onDestroy方法。在onDestory方法中,您编写代码来停止您的任务。

答案 1 :(得分:0)

不要在单独的线程中启动服务或在您的情况下使用IntentService或由处理程序启动服务,因为服务在ui线程中运行