개발

Parcel이란 Android에서 Parcel은 Java 객체를 마샬링 및 마샬링 해제하기 위한 고성능 메커니즘입니다. 객체를 바이트 스트림으로 직렬화하여 프로세스 경계를 넘어 전송할 수 있습니다. 또는 파일 또는 데이터베이스에 저장할 수 있습니다. Android는 사용자 정의 객체를 Parcel로 직렬화하는 데 사용되는 Parcelable 인터페이스도 제공합니다. Parcel 클래스는 기본 데이터 유형, 배열 및 기타 객체를 쓰고 읽을 수 있는 메서드를 제공합니다. Parcelable 인터페이스를 구현하려면 개체의 상태를 소포에 쓰고 다시 읽는 코드를 작성해야 합니다. 다음은 Parcelable 인터페이스를 구현하는 클래스의 예입니다. public class Person implements Parcel..
· 개발/Java
추상화란 (구현숨기기, class 앞쪽 성질변환) 추상화는 Java에서 객체 지향 프로그래밍(OOP)의 네 가지 기본 개념 중 하나입니다. 사용자에게 꼭 필요한 정보만 보여주면서 구현 내용을 숨기는 과정을 말합니다. Java에서 추상화는 추상 클래스와 인터페이스를 통해 이루어집니다. 추상 클래스는 인스턴스화할 수 없고 다른 클래스에 의해 서브클래싱되도록 설계된 클래스입니다. 추상 메서드와 비추상 메서드를 모두 가질 수 있습니다. 추상 메서드는 본문이 없는 메서드이며 추상 클래스를 확장하는 모든 하위 클래스에 의해 구현되어야 합니다. 다음은 Java에서 추상 클래스의 예입니다. public abstract class Shape { public abstract double getArea(); public a..
· 개발/Java
상속 (부모꺼 갖다쓰기) 상속은 Java에서 객체 지향 프로그래밍(OOP)의 기본 개념 중 하나입니다. 이를 통해 클래스는 수퍼 클래스 또는 부모 클래스라고 하는 다른 클래스의 속성과 동작을 상속할 수 있습니다. 슈퍼클래스에서 상속되는 서브클래스를 정의하기 위해 클래스 정의에서 extends 키워드를 사용합니다. 그런 다음 서브클래스는 슈퍼클래스의 속성과 메서드를 자신의 것처럼 사용할 수 있습니다. 예를 들면 다음과 같습니다. public class Animal { private String name; private int age; public Animal(String name, int age) { this.name = name; this.age = age; } public void eat() { Sys..
· 개발/Java
다형성이란 다형성은 객체 지향 프로그래밍의 기본 개념이며 Java의 기능입니다. 서로 다른 클래스의 개체를 동일한 유형인 것처럼 처리할 수 있습니다. 이는 각 개체의 정확한 클래스를 알 필요 없이 균일한 방식으로 서로 다른 클래스의 개체에 대해 작업할 수 있는 코드를 작성하려는 경우에 유용할 수 있습니다. Java에서 다형성은 메서드 재정의(Overloading)와 메서드 오버로딩(Overriding)이라는 두 가지 메커니즘을 통해 달성됩니다. Overloading (output 다양화) Java에서 메서드 오버로딩은 클래스가 이름은 같지만 매개 변수가 다른 여러 메서드를 가질 수 있도록 하는 기술입니다. 메서드 오버로드를 사용하면 개발자가 클래스에서 동일한 이름을 가진 둘 이상의 메서드를 만들 수 있으..
서비스 란 보이지 않게 돌아가는 4대 애플리케이션 구성요소(액티비티, 서비스, 브로드캐스트 리시버, 컨텐츠 프로바이더) 중 하나. 서비스 유형으로는 background service, foreground service 로 나뉘고 이를 통해 immortal service 를 구현할 수 있다. 서비스 시작 방식으로는 startservice, bindservice 로 나뉜다. 서비스의 세가지 유형과 우선순위 포그라운드 서비스 이름 그대로 사용자에게 보이는 작업을 수행한다. 왜 포그라운드인가? 사운드클라우드(멜론같은 앱)을 예로 들자. 다른 앱을 실행하고 있어도 그 위에 오디오 트랙을 재생시킬 수 있다. startService() 로 호출되고 onStartCommand 로 실행된다. (최신버전에선 startFo..
Activity 란 Android에서 액티비티는 현재 보이는 화면 및 사용자가 상호작용 하는 단계를 관리하는 안드로이드 4대 구성요소 중 하나입니다. 액티비티는 타 액티비티 혹은 시스템 자체에 의해 시작될 수 있습니다. TODO) 시스템에 의해 시작하는 액티비티 예제 각 활동은 고유한 레이아웃, 동작 및 기능을 가질 수 있으며 운영 체제에서 관리하여 리소스를 최적화하고 더 나은 사용자 경험을 제공할 수 있습니다. 액티비티는 앱의 매니페스트 파일에서 선언되며 활동 클래스를 확장하는 클래스로 정의됩니다. TODO) 시스템에 의해 시작하는 액티비티 예제 활동에는 onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart() 및 onDestroy()와 ..
largeheap Android에서 largeHeap 속성은 애플리케이션의 AndroidManifest.xml 파일에서 true 또는 false로 설정할 수 있다. true로 설정하면 애플리케이션 프로세스에 대해 더 큰 메모리를 요청한다. 시스템에서 제공하는 기본 힙 크기보다 더 많은 메모리가 필요한 메모리 앱에 좋다. 기본적으로 각 Android 앱에는 힙 크기라고 하는 사용 가능한 메모리 양이 제한되어 있다. 기본 힙 크기는 Android 버전 및 기기에 따라 다르지만 일반적으로 16~128MB 범위인데 크기 제한을 초과하면 성능 문제가 발생하거나 충돌할 수도 있다. largeHeap 속성을 true로 설정하면 애플리케이션 프로세스에 사용할 수 있는 메모리(힙) 크기가 증가하여 이러한 문제를 방지할 ..
기본적으로 Android 스튜디오의 인텐트 메커니즘은 앱 내의 활동 또는 구성요소 간에 소량의 데이터를 전송하도록 설계되었습니다. 100MB가 넘는 대용량 데이터를 보내야 하는 경우 다음과 같은 몇 가지 방법을 사용할 수 있습니다. ContentProvider ContentProvider는 서로 다른 앱 또는 구성 요소 간에 데이터를 공유할 수 있게 해주는 Android 구성 요소입니다. ContentProvider를 사용하여 대규모 데이터 세트를 노출한 다음 인텐트를 사용하여 다른 구성 요소에서 액세스할 수 있습니다. 이 접근 방식은 다른 앱과 데이터를 공유해야 하는 경우에 특히 유용합니다. Service 서비스는 백그라운드에서 실행되고 장기 실행 작업을 수행할 수 있는 Android 구성 요소입니다...
· 개발/C
inline 이란 C 프로그래밍 언어에서 "인라인"은 함수가 호출되는 지점에서 함수 호출을 실제 함수 코드로 대체하도록 컴파일러에 제안하는 데 사용되는 키워드입니다. 이를 "인라인 함수 확장"이라고 합니다. C에서 함수가 정상적으로 호출되면 프로그램은 함수 코드로 점프하여 실행한 다음 다시 함수가 호출된 지점으로 돌아갑니다. 그러나 인라인 함수를 사용하면 컴파일러가 함수 호출을 실제 함수 코드로 대체하여 함수 호출의 오버헤드를 줄이고 성능을 개선하며 코 드 크기를 최적화할 수 있습니다. C 프로그래밍에서 inline 키워드는 컴파일러가 함수의 인라인 확장을 수행하도록 제안하는 데 사용됩니다. 함수가 인라인으로 선언되면 컴파일러는 함수가 호출될 때마다 함수 호출을 함수의 실제 코드로 바꾸도록 선택할 수 있..
· 개발/C
고수님들에겐 당연하고 시시한 말일수도 있지만 C언어에서 쓰레드를 예시로 어디서 지역변수 전역변수가 접근되는지 여부를 한번 보겠다. 지역변수는 쓰레드간 미공유 void entry(int a) { a = 1; } void main() { int a = 0; entry(a); printf("%d\n", a); } 출력은 0이 된다. 지역변수는 단순히 그 값을 가져왔기 때문에 전역변수는 쓰레드간 공유 # define A 0 void entry(int A) { A = 1; } void main() { entry(A); printf("%d\n", A); } 출력은 1이된다. 전역변수는 쓰레드간 공유가 된다.
· 개발/C
#include #include "chat_multi.h" #define ab(A) void (*A)() struct animal { char name[15]; ab(cry); }; void a_cry() { printf("Umm.....\n"); } void b_cry() { printf("kkkk,....\n"); } void check_animal_type(struct animal *animal) { if (!strcmp(animal->name, "a")) animal->cry = a_cry; else if (!strcmp(animal->name, "b")) animal->cry = b_cry; } void main() { struct animal animal; memset(animal.name, ..
· 개발/C
syscall C 프로그래밍 언어에서 syscall(시스템 호출의 줄임말)은 파일에 데이터 읽기 또는 쓰기, 새 프로세스 생성 또는 메모리 할당과 같은 특정 작업이나 서비스를 수행하기 위해 프로그램이 운영 체제에 요청하는 것입니다. Syscalls는 사용자 수준 프로그램이 시스템의 기본 하드웨어 및 소프트웨어 리소스와 상호 작용할 수 있는 방법을 제공합니다. 다음은 unistd.h 헤더 파일에서 제공하는 "syscall" 함수를 사용하여 C에서 syscall을 만드는 방법의 예입니다. #include #include #include int main() { long result = syscall(SYS_getpid); printf("Process ID: %ld\n", result); return 0; } ..
yeonlee
'개발' 카테고리의 글 목록 (2 Page)