как выполняется метод onCreate ()? - PullRequest
0 голосов
/ 06 октября 2018
public class MainActivity extends AppCompatActivity {

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


    }
}

Когда я вижу этот основной исходный код в MyActivity.java, метод onCreate () просто переопределяется.но когда я запускаю приложение, я вижу, что запускается переопределенный метод onCreate ().как это возможно?

Если возможно запустить метод onCreate в этом коде, я подумал, что должен быть код, подобный onCreate();

Ответы [ 2 ]

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

Метод onCreate вызывается во время жизненного цикла Activity . Документы относительно состояния этого метода

Вы должны реализовать этот обратный вызов, который запускается, когда система впервые создает действие

Итак, смысл этогоЭтот метод предназначен для инициализации чего-либо определенного для вашей деятельности, которое необходимо выполнить при его первом создании, и вызова super, чтобы распространить это на свои суперклассы, что позволяет им также выполнять свою последовательность инициализации.Вы не должны вызывать этот метод самостоятельно.

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

Мы всегда можем переопределить эти функции и добавить к ним больше, но вопрос в том, как эти функции вызываются автоматически, когда их никто не вызывает?Мы не написали никакого кода для их вызова.

Вот здесь и появляется понятие ФУНКЦИИ ВЫЗОВА .

Концепция обратных вызовов заключается в информировании синхронного класса/ асинхронный, если выполняется некоторая работа в другом классе.Некоторые называют это принципом Голливуда: «Не звоните нам, мы вас зовем».

Вот пример:

class A implements ICallback {
     MyObject o;
     B b = new B(this, someParameter);

     @Override
     public void callback(MyObject o){
           this.o = o;
     }
}

class B {
     ICallback ic;
     B(ICallback ic, someParameter){
         this.ic = ic;
     }

    new Thread(new Runnable(){
         public void run(){
             // some calculation
             ic.callback(myObject)
         }
    }).start(); 
}

interface ICallback{
    public void callback(MyObject o);
}

Класс A вызывает класс B, чтобы выполнить некоторую работу в потоке,Если поток завершил работу, он проинформирует класс A об обратном вызове и предоставит результаты.Таким образом, нет необходимости опроса или что-то.Вы получите результаты, как только они станут доступны.

В Android используются обратные вызовы, например, между действиями и фрагментами.Поскольку фрагменты должны быть модульными, вы можете определить обратный вызов во фрагменте для вызова методов в действии. скопировано отсюда

для получения дополнительной информации перейдите по этой ссылке, пожалуйста:

ссылка 1

ссылка 2

...