반응형
Notice
Recent Posts
Recent Comments
Link
NOW OR NEVER
[Android] File I/O 본문
반응형
File I/O
- download folder를 쓰는 것이 원칙
- 기존에는 코드를 통해서 특정 파일 경로 얻어오는 것이 가능했으나 안드로이드 10 부터는 불가능하게 됨
- 저장 방법
- 메모리 : 애플리케이션이 실행 중에만 사용하는 경우
- 단말기내부 : 애플리케이션이 종료되고 다시 실행되었을 때도 사용하는 경우(데이터가 유실 가능)
- 서버 : 애플리케이션이 종료되고 다시 실행되었을 때도 사용하는 경우 (데이터 유실 x) or 다른 단말기에서도 사용하는 경우
- stream은 제일 마지막 애만 닫아도 다 닫힌다.
- MimeType : 파일에 저장되어 있는 데이터의 양식이 무엇인지를 타나내는 문자열(https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types)
- launcher
- writeActivityLauncher
- readActivityLauncher
내부 저장소와 외부 저장소
- 안드로이드의 경우 sd카드도 지원되겠끔 저장 방식을 만듦
- 사진, 영화, 음악 등은 고속 메모리(플래시 메모리) 장치를 사용하지 않아도 되니 sd를 쓰는 방향이었다.
- 플래시 메모리를 내부 저장소와 외부 저장소 나눠서 사용하게 됨
내부저장소
- 내부 저장소 용량은 굉장히 적고 외부 저장소의 용량이 차지하는 비율이 훨씬 크다.
- 데이터 용량이 적은 것들은 내부 저장소에 저장하는 것을 권장
- 쓰기
- openFileOutput(데이터 파일 이름, MODE_PRIVATE) : MODE_PRIVATE = 덮어 씌우기, MODE_APPEND = 이어서 쓰기
- DataOutputStream(openFileOutput로 만든 것) : 해당 메서드로 만든 것을 가지고 쓰는 메서드(writeInt 등) 사용
- 읽기
- openFileInput(읽을 데이터 파일 이름)
- DataInputStream(openFileInput으로 만든 것) : 해당 메서드로 만드는 것을 가지고 읽는 메서드(readInt 등) 사용
외부 저장소
- 용량이 굉장히 크거나 커질 거 같은 것들은 외부 저장소에 저장하는 것을 권장
etc
- 서버
- 서버는 분산 운영이 가장 중요하다. : 서버가 하나만 있어도 서비스에 문제가 안되지만 분산 운영을 하여 모든 것을 동기화 한다.한 서버에서 장애 발생 시 다른 서버로 대체하여 백업서버로 사용할 수 있게 한다.
- 서버는 항상 장애가 발생할 수 있음을 염두해두고 만들어야 한다.
- material_dynamic_tertiary99 : background(toolbar와 layout) 색상을 화이트 보단 해당 색상으로 설정(단말기 밝기 올리면 화이트인 경우 눈이 아플 수 있으므로)
new fragment basic code
- fragment name enum 제거 및 타입 문자열로 수정
// 지정한 Fragment를 보여주는 메서드
fun replaceFragment(name:String, addToBackStack:Boolean, animate:Boolean){
// Fragment 교체 상태로 설정한다.
val fragmentTransaction = supportFragmentManager.beginTransaction()
// 새로운 Fragment를 담을 변수
var newFragment= when(name){
MAIN_FRAGMENT -> {
MainFragment()
}
// else는 동작되지 않도록
else ->{
Fragment()
}
}
if(newFragment != null) {
// Fragment를 교채한다.
fragmentTransaction.replace(R.id.mainContainer, newFragment)
if (animate == true) {
// 애니메이션을 설정한다.
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
}
if (addToBackStack == true) {
// Fragment를 Backstack에 넣어 이전으로 돌아가는 기능이 동작할 수 있도록 한다.
fragmentTransaction.addToBackStack(name)
}
// 교체 명령이 동작하도록 한다.
fragmentTransaction.commit()
}
}
// Fragment를 BackStack에서 제거한다.
fun removeFragment(name:String){
supportFragmentManager.popBackStack(name, 0)
}
'Android' 카테고리의 다른 글
[Android] AndroidX 패키지가 작동하지 않는 오류 해결 (0) | 2023.07.06 |
---|---|
[Android] Resource & SQLiteDataBase (0) | 2023.07.05 |
[Android] 안드로이드 스튜디오 Mac 클릭 및 커서 Error (0) | 2023.07.04 |
[Android] Layout (0) | 2023.07.03 |
[Android] ToolBar & coordinate Layout (0) | 2023.06.28 |