0
MMuzammil: MainActivity:in onCreate 
MMuzammil: FirstFragment:in onAttach 
MMuzammil: FirstFragment:in onCreate 
MMuzammil: FirstFragment:in onCreateView 
MMuzammil: FirstFragment:in onActivityCreated 
MMuzammil: FirstFragment:in onStart <---- 
MMuzammil: MainActivity:in onStart <---- 
MMuzammil: MainActivity:in onResume 
MMuzammil: FirstFragment:in onResume 

Как мы видим, мой Fragment.onStart вызывается перед Activity.onStart. Кто-нибудь знает, что может быть причиной такого поведения? Потому что, когда активность перемещается на передний план, методы обратного вызова на данном виде деятельности должны всегда вызывать первуюFragment.onstart вызывается до Activity.start

активность:

public class MainActivity extends AppCompatActivity { 

public static final String TAG = "MMuzammil"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Log.d(TAG, "MainActivity:in onCreate"); 
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FirstFragment()).commit(); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    Log.d(TAG, "MainActivity:in onStart"); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    Log.d(TAG, "MainActivity:in onResume"); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    Log.d(TAG, "MainActivity:in onPause"); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    Log.d(TAG, "MainActivity:in onStop"); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.d(TAG, "MainActivity:in onDestroy"); 
} 

@Override 
protected void onRestart() { 
    super.onRestart(); 
    Log.d(TAG, "MainActivity:in onRestart"); 
} 
} 
+0

показать еще код. Код, в котором вы печатаете журналы –

+0

@ VladMatvienko Пожалуйста, проверьте сейчас –

ответ

1

Это просто потому, что вы звоните super.onStart(), а затем печать журналов в вашей деятельности , Таким образом, в основном работает onStart() вашей активности.

Я думаю :)

+0

Я тоже вызываю super.onResume() в Activity. Почему сначала запускается журнал onResume() моей активности? –

+1

Некоторые журналы времени не совпадают. И это также отличается тем, что система (Phone OS) может выполнять более тяжелую работу между onResume of Activity и onResume of Fragment. Он будет отличаться от телефона к телефону, os to os, но порядок останется таким же, как и в этом. – Neo

2

Это нормальное поведение. Если вам нужно что-то сделать во фрагменте перед запуском, лучше переопределить и использовать метод onAttach (контекстный контекст).

+1

Не имеет смысла. Почему это не относится к onCreate, который вызывается перед onStart или для onResume, который вызывается после onStart? –