151127 uwp study
27 Nov 2015
- 오늘의 uwp 스터디.
- 윈도우 스토어에 올려볼만한 좋은 유틸리티 아이디어가 생각났다.
- 그 준비과정…
##File I/O
http://www.kunal-chowdhury.com/2012/11/win8dev-tutorial-windows-store-files-folders.html
샌드박스 내부의 디렉토리 즉 설치디렉토리 (Package.Current.InstalledLocation
) 에서만 경로로 직접접근이 가능하고 그 외부라면 FilePicker를 사용해야 하는 것 같다. (아직 깊게 조사는 안해봤음.)
StorageFolder folder = Package.Current.InstalledLocation;
// ways to create new folder
folder.CreateFolderAsync("Demo Folder", CreationCollisionOption.FailIfExists);
folder.CreateFolderAsync("Demo Folder", CreationCollisionOption.GenerateUniqueName);
folder.CreateFolderAsync("Demo Folder", CreationCollisionOption.OpenIfExists);
folder.CreateFolderAsync("Demo Folder", CreationCollisionOption.ReplaceExisting);
// ways to get folder
folder.GetFolderAsync("Demo Folder");
// ways to create new file
folder.CreateFileAsync("Demo File.txt", CreationCollisionOption.OpenIfExists);
folder.CreateFileAsync("Demo File.txt", CreationCollisionOption.GenerateUniqueName);
folder.CreateFileAsync("Demo File.txt", CreationCollisionOption.OpenIfExists);
folder.CreateFileAsync("Demo File.txt", CreationCollisionOption.ReplaceExisting);
// ways to get file
folder.GetFileAsync("Demo File.txt");
// ways to get all files by search queries
folder.GetFilesAsync(CommonFileQuery.DefaultQuery);
folder.GetFilesAsync(CommonFileQuery.OrderByDate);
folder.GetFilesAsync(CommonFileQuery.OrderByMusicProperties);
folder.GetFilesAsync(CommonFileQuery.OrderByName);
folder.GetFilesAsync(CommonFileQuery.OrderBySearchRank);
folder.GetFilesAsync(CommonFileQuery.OrderByTitle);
// ways to delete a folder instance
folder.DeleteAsync(StorageDeleteOption.Default);
folder.DeleteAsync(StorageDeleteOption.PermanentDelete);
앱 수명주기
https://msdn.microsoft.com/ko-kr/library/windows/apps/mt243287 아주 간단히 정리하면…
함수 | 시점 | 할일 |
---|---|---|
OnLaunched | 앱시작 | 초기 데이타 로딩 |
OnSuspending | 앱종료, 앱비활성화 | 데이타 저장 |
OnLaunched 에서 초기데이타 로딩은 하던대로 하고,
OnSuspending 에서 데이타 저장하는 앞뒤로 앱 종료를 지연시키면서 저장시간을 벌어주는 녀석이 있는데 이 규칙을 잘 지켜야 한다. deferral.Complete();
을 빼먹으면 저장하다말고 앱종료 될수도 있다.
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
Debug.WriteLine("1");
//TODO: 응용 프로그램 상태를 저장하고 백그라운드 작업을 모두 중지합니다.
await Task.Delay(10 * 1000);
Debug.WriteLine("2");
deferral.Complete();
Debug.WriteLine("3");
}