Обратный звонок в Android? - PullRequest
       13

Обратный звонок в Android?

17 голосов
/ 02 апреля 2010

При разработке приложений для Android я часто использую слово CallBack во многих местах. Я хочу знать, что значит сказать нам технически - и как мне удается использовать callback в приложениях. Мне нужно руководство, чтобы понять и использовать его.

Ответы [ 3 ]

15 голосов
/ 02 апреля 2010

я хочу знать, что это значит, скажи нас технически

http://en.wikipedia.org/wiki/Callback_%28computer_science%29

"В объектно-ориентированных языках программирования без функционально-значимых аргументов, таких как Java, [callbacks] можно моделировать, передавая абстрактный класс или интерфейс, из которого получатель вызовет один или несколько методов, в то время как вызывающая сторона конкретная реализация. Такие объекты, по сути, представляют собой набор обратных вызовов плюс данные, которыми они должны манипулировать. Они полезны при реализации различных шаблонов проектирования, таких как Visitor, Observer и Strategy. "

как я могу управлять обратным вызовом приложения

Понятия не имею, что это значит.

6 голосов
/ 19 февраля 2011

Хм. Как насчет примера. Вы пишете алгоритм быстрой сортировки на языке C. Пользователь, который хочет использовать ваш алгоритм, должен предоставить метод сравнения, соответствующий тому, что пользователь сортирует по вашему алгоритму. Пользователь должен передать указатель функции на метод сравнения пользователя в свой код быстрой сортировки. Код быстрой сортировки использует этот адрес, указатель функции, для ВЫЗОВА НАЗАД на функцию сравнения пользователя. Вы предоставляете прототип функции, а не реализацию, так как вы не можете знать, как определить порядок сортировки. Пользователь предоставляет реализацию сравнения, которая имеет смысл для того, что пользователь сортирует. Эта реализация должна соответствовать прототипу функции. Указатель на функцию используется алгоритмом быстрой сортировки для возврата назад и прикосновения к коду пользователя.

Это на самом деле о полиморфизме.

В Java вы можете использовать интерфейс для этого. Так что для сортировки смотрите интерфейс IComparer и IComparable.

4 голосов
/ 17 февраля 2015

Интерфейс Callable может использоваться для запуска фрагмента кода, как это делает Runnable. Однако Callable может вернуть результат и может выдать проверенное исключение.

Для более подробной информации. http://developer.android.com/reference/java/util/concurrent/Callable.html

Используя интерфейсы Callable, вы можете передать аргумент как функцию. Я добавил простой фрагмент кода для понимания.

public class MainActivity<V> extends Activity {


    Callable<String> doLogin=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        doLogin=new Callable<String>() {  //created but not called now.

            @Override
            public String call() throws Exception {

                //make some piece of code
                return "something"; //or false
            }
        };

        CheckSession checkSession=new CheckSession("sessionName");
        String sessionKey="";


        try {  //we are sending callable to the DAO or any class we want 
             sessionKey=checkSession.getSessionKey(doLogin);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}



public class CheckSession{


    String sessionName="";
    Callable<String> func=null;

    public CheckSession(String sessionName) {
        super();
        this.sessionName = sessionName;

    }

    public String getSessionKey(Callable<String> doLogin) throws Exception{

        func=doLogin;

        return (String) func.call();

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...