Самый простой подход, который я могу придумать, - это пропустить флаг при запуске действия из ваших собственных действий. Вы также должны проверить, было ли действие создано или возобновлено, это можно сделать, установив логическое значение в методе onCreate, а затем проверив его на onResume.
Ниже приведен код, который вы можете использовать ( не проверено ):
Активность, в которой вы хотите проверить (скажем, MainActivity.class):
Boolean onCreateCalled = false;
Boolean calledFromAppActivities = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onCreateCalled = true;
Bundle mainData = getIntent().getExtras();
if (mainData != null) {
if (getIntent().hasExtra("call_from_own_activity")) {
calledFromAppActivities = true;
}
}
.....
}
@Override
protected void onResume() {
super.onResume();
if (onCreateCalled && !calledFromAppActivities) {
// The app was not called from any of our activities.
// The activity was not resumed but was created.
// Do Stuff
}
// To stop it from running again when activity is resumed.
onCreateCalled = false;
....
}
При вызове MainActivity из других действий используйте код ниже:
private void call_main () {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.putExtra("call_from_own_activity", true);
startActivity(i);
}