황현동 블로그 개발, 인생, 유우머

151127 uwp study

Tags:




  • 오늘의 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");
}