@ rafsanahmad007 ответ хороший, но если вам действительно нужно использовать onResume()
, есть несколько способов приблизиться к нему.
Один из вариантов - установить флаг boolean
внутри onActivityResult()
, а затем проверить его в onResume()
:
private boolean returningFromResult = false;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FOO) {
this.returningFromResult = true;
// ...
}
}
@Override
protected void onResume() {
super.onResume();
if (returningFromResult) {
// special case
} else {
// normal case
}
}
Другой вариант - проверить внутри onCreate()
, есть ли параметр savedInstanceState
нулевой. Если это ноль, это означает, что вы запускаете в первый раз. Затем вы можете объединить это с логикой в onResume()
, чтобы определить, был ли вызван onResume()
более одного раза:
private boolean isFirstOnResume;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.isFirstOnResume = (savedInstanceState == null);
// ...
}
@Override
protected void onResume() {
super.onResume();
if (isFirstOnResume) {
this.isFirstOnResume = false;
// normal case
} else {
// special case
}
}
Тем не менее, если вы можете просто использовать onActivityResult()
для выполнения вашей логики, это будет быть лучшим путем.
Используйте перечисление FileShare при открытии файла с помощью Файла. Открытый. А именно, используйте FileShare. ReadWrite.
Не возможный. Узнайте о том, как файлы читаются/пишутся в диск.
Править: Начиная со всего downvotes я предполагаю, что объясню немного больше. Больше чем для одного процесса абсолютно невозможно записать в тот же файл в то же точное время. Когда один процесс запишет, файл обычно будет недоступен другим устройствам записи, означая, что другие процессы должны были бы ожидать, пока файл больше не пишется в первым процессом.
Класс FileStream имеет конструктора, который выбирает несколько вариантов включая FileShare
new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);