0

私は翻訳アプリを開発していますが、何らかの理由でアプリケーション クラスでサービスを開始したいと考えています。アプリケーションを拡張する「MyApplication」クラスを作成します。

public class MyApplication extends Application{
@Override
public void onCreate() {
    if(PreferenceUtils.getPreferenceValue(getApplicationContext(),"clipBoardService").equals(""))
        PreferenceUtils.setPreferenceValue(getApplicationContext(),"clipBoardService","True");

    //Start ClipBoard Services
    if(PreferenceUtils.getPreferenceValue(getApplicationContext(),"clipBoardService").equals("True"))
        getApplicationContext().startService(new Intent(getApplicationContext(), ClipboardService.class)); 
}

次のコード行で ClipboardService を開始したことがわかります。

getApplicationContext().startService(new Intent(getApplicationContext(), ClipboardService.class));

他のいくつかの理由で、「SettingFragment」と呼ばれるフラグメントの1つでこのサービスを停止したい:

public class SettingFragment extends Fragment {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_setting, container, false);
        SwitchCompat scClipBoard = (SwitchCompat) inflate.findViewById(R.id.sb_ClipBoard_Service);
        SwitchCompat scPopUp = (SwitchCompat) inflate.findViewById(R.id.sb_PopUp_Service);

        // Turn On CheckBox's
        if(PreferenceUtils.getPreferenceValue(getContext(),"clipBoardService").equals("True"))
            scClipBoard.setChecked(true);
        if(PreferenceUtils.getPreferenceValue(getContext(),"popUpService").equals("True"))
            scPopUp.setChecked(true);

        // handle OnCheckListener of CheckBox's
        scClipBoard.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked == true){
                    PreferenceUtils.setPreferenceValue(getContext(), "clipBoardService", "True");
                    getActivity().getApplicationContext().startService(new Intent(getActivity().getApplicationContext(), ClipboardService.class));
                }
                else{
                    PreferenceUtils.setPreferenceValue(getContext(), "clipBoardService", "False");
                    getActivity().getApplicationContext().stopService(new Intent(getActivity().getApplicationContext(), ClipboardService.class));
                }
            }
        });

次のコード行でサービスを停止していることがわかります。

getActivity().getApplicationContext().stopService(new Intent(getActivity().getApplicationContext(), ClipboardService.class));

しかし、プログラムを実行してもサービスは停止しません。何が起こったのか、なぜ私のサービスが停止しないのか混乱しています。いくつかの点で間違いを犯していますか? よろしくお願いします...

4

1 に答える 1