2013-04-23 9 views
0

내 앱에서 특정 시간 간격으로 wakelock을 수행하고 싶습니다. 안드로이드가 wakelock이 풀리기 전에 디스크에 내 앱의 전체 상태를 저장 한 다음 AlarmManager 알람이나 다른 프로세스가 내 앱을 시작하려고 할 때 다시로드 할 수 있다면 좋을 것입니다. 현재 디스크에 많은 변수를 저장하고 앱을 다시 시작하면 다시로드합니다. Microsoft Windows는 대기 모드로 전환 할 때이 작업을 수행합니다. 안드로이드가 비슷한 종류의 것을 지원하는지 궁금하다.안드로이드는 디스크에 앱 상태를 저장하는 수단을 가지고 있습니까?

+1

0120-385-503 –

+0

내 앱이 아닌 활동에만 사용되며 서비스에는 해당되지 않습니다. 또한 복원 할 모든 변수를 저장해야합니다. 데이터베이스에 저장하는 것 외에는 어쨌든 제가하고있는 것입니다. Android가 디스크의 전체 상태를 자동으로 디스크에 저장하는 방식을 더 찾고 있습니다. – AndroidDev

답변

2

전체 신청 상태를 저장하는 것이 좋다고 생각하지 않습니다. 응용 프로그램의 상태를 저장할 때 모든 단일 변수를 저장할 필요가 없습니다. 대부분의 변수는 표면과 같은 런타임 객체에 대한 포인터입니다. 압축 해제 된 이미지, 소리 등은 저장하지 말아야합니다. 대신 이력서에 다시 APK 리소스에서로드해야합니다. 필자는 프로그래머가 없이는 이것을 효율적으로 수행하는 방법이 없다고 생각합니다. 죄송합니다. 누군가 응용 프로그램이로드되는지 알아야합니다.

나는 스마트 폰이 작동하고 작동하는 방식을 잘못 이해했다고 생각합니다. 아니면 당신의 질문을 오해 할 수도 있습니다. 데스크톱에서 MS Windows에 대해 이야기하고 있고 최대 절전 모드 상태 인 경우 전화 작동 방식과 사용자가이를 사용하는 방식과 완전히 다릅니다. Windows CE에서 메모리에 대한 수면은 잘 작동 할 수 있으며, 수행 한 모든 것을 저장하고 CPU를 중지하십시오. 네비게이션 장치와 같은 단일 목적 장치에서, 그것은 충분히 충분하고 잘 작동합니다. 장치를 끄고 탐색을 끄고 전원을 켜면 다시 탐색을 시작합니다. 완전한 OS의 이력서는 여기에서 좋습니다.

하지만 스마트 폰은 전체 기기로 잠자기 모드로 들어 가지 않습니다. 그들은 많은 응용 프로그램을 가지고 있습니다. 그리고 한 응용 프로그램이 아무 것도 할 필요가 없다고해서 그것이 전체 장치가 그 때문에 잠들 수 있다는 것을 의미하지는 않습니다. 전화입니다, 전화를 받아 들일 수 있어야합니다. 메일을받습니다. GPS를 사용하여 트랙을 녹음하십시오. 최대 절전 모드 창과 달리 OS 자체는 계속해서 실행되어야합니다.

그래서 이전 상태로 복원해야하는 최소한의 정보를 직렬화하면됩니다. 1 시간 전에 생성 한 네트워크 연결이 유효하지 않기 때문에 시스템에서이 작업을 수행 할 수 없습니다. 다른 응용 프로그램에서 파일을 이동할 수 있습니다. AlarmManager에 의해 활동 또는 서비스가 시작된 경우 직접 수행 한 작업을 저장해야합니다. SharedPreferences 또는 Sqlite 데이터베이스를 사용하십시오. 간단한 데이터가있는 경우 OnSaveInstanceState 번들 만 사용하십시오.

달성하려는 작업에 대해 설명하고 싶습니까? 난 당신이 잘못된 방식으로 응용 프로그램을 디자인하려는 생각합니다.