Различить интерфейс фрагмента и фоновый сервис? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть метод в служебном файле, его роль состоит в том, чтобы проверить, есть ли новое обновление на моем сервере или нет .. этот метод вызывается из двух мест .. он вызывается автоматически при запуске приложения и вызывает еговручную из интерфейса фрагмента.То, что я хочу, -> когда метод вызывается из пользовательского интерфейса, я хочу отображать оповещение в некоторых исключениях вместо того, чтобы записывать их в мой файл журнала.

Это мой метод обслуживания:

public void checkUpdate(Boolean IsUpdateExist,Boolean IsServerError,String LatestApplicationCode,
                        String LatestApplicationName,Integer LatestVersionCode,String LatestVersionName,
                        String ResponseUpdateInformationType,String ResponseUpdateURI,String ServerErrorMessage,String ServerErrorStackTrace){

    if(IsServerError == null){
        //If called from a user interface => show alert dialog here.

        FileUtil.logInformation(this.getClass().getName(), "Can't connect to server!");
        return;
    }

    else{
        if(IsServerError){
        //If called from a user interface => show alert dialog here.

            FileUtil.logInformation(this.getClass().getName(), "Server error! | error message: "+ServerErrorMessage);
            return;
        }
        else {
            if(!IsUpdateExist || IsUpdateExist == null){
            //If called from a user interface => show alert dialog here.

                FileUtil.logInformation(this.getClass().getName(), "No updates available !");
                return;
            }
            else {
                if (LatestVersionCode != null && LatestVersionCode <= CurrentVersionCode){
               //If called from a user interface => show alert dialog here.

                    FileUtil.logInformation(this.getClass().getName(), "No new updates ! | version in the server= "+LatestVersionCode
                            +" version installed= "+CurrentVersionCode);
                    return;
                }
                else {
                    if(ResponseUpdateURI != null && !ResponseUpdateURI.contentEquals("")){
                        this.updateApp(IsUpdateExist,IsServerError,LatestApplicationCode,LatestApplicationName,LatestVersionCode,
                                LatestVersionName,ResponseUpdateInformationType,ResponseUpdateURI,ServerErrorMessage,ServerErrorStackTrace);
                    }
                    else {
                    //If called from a user interface => show alert dialog here.

                        FileUtil.logInformation(this.getClass().getName(), "It seems there is a problem with the download URL");
                        return;
                    }
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете написать интерфейс, который реализует и ваш Service, и Fragment, а затем вы проверяете экземпляр этого класса и делаете все, что вам нужно.Например:

interface MyCustomJobExecutor {}

public class MyFragment extends Fragment implements MyCustomJobExecutor {/*...*/}

public class MyService extends Service implements MyCustomJobExecutor {
    //...
    public void checkUpdate(MyCustomJobExecutor jobExecutor, ...) {
        if (jobExecutor instanceof MyFragment) {
            // Manual code execution here
        } else { // Automatic code execution stuff }
    }
    //...
}
...