无法停止我从其他活动开始的“偏好 - 活动”中的服务

时间:2015-12-30 22:34:42

标签: android android-service

我在我的LoginFragment.class中使用以下代码在Android中启动了一个Activity:

startActivity(new Intent(getActivity(), ClientActivity.class));
getActivity().finish();

你可以看到,我在开始新活动后杀死了片段。 现在,此活动通过以下方式启动服务本身:

startService(new Intent(ClientActivity.this, MyTCPIPService.class));

稍后,当点击我的首选项中的按钮时,我想停止服务。 我试过这个:

Preference button = (Preference)findPreference("pref_logout");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        stopService(new Intent(getApplication(), MyTCPIPService.class));
        startActivity(new Intent(getApplication(), ClientActivity.class));
        finish();
        return true;
    }
});

onDestrop() - 我的MyTCPIPService.class的方法被调用,但服务不会停止。 另外我想知道如何在重新启动之前停止我的ClientActivity.class?

也许错误是,我在尝试停止服务时创建新意图? 谁能在这帮助我?

修改 我不认为它与提交的问题有重复,因为我在我的服务中确实有一个Async-Task,但在onDestroy()中 - 方法我取消它并设置其中的对象开始为“null” 。所以它不应该是问题,有一个无限循环或async-Task仍在运行并保持服务。

1 个答案:

答案 0 :(得分:1)

您确定使用LoginFragment关闭了getActivity().finish()吗? 使用getActivity().getSupportFragmentManager().popBackStack(),检查其中的onDetach()方法。

您使用的是什么serviceSTART_STICKY / START_NOT_STICKY?检查其中的onTaskRemoved()方法。尝试使用service关闭stopSelf()