단일 플레이어에서 앱을 사용하는 동안 대량의 데이터를 추적 할 가능성이있는 앱을 보유하고 있으며 내 앱에서 한 번에 최대 5 명의 플레이어를 허용 할 수 있습니다. 이는 많은 양의 데이터가 잠재적으로 배가된다는 의미입니다. 시간 5.onRetainNonConfigurationInstance를 사용하는 대안
활동이 파괴되면 모든 SQLite 데이터베이스에 데이터를 쓰고 정상적으로 작동합니다.
방향 변경 중에 문제가 발생합니다. 나는 오리엔테이션 변경을 위해 적어도 의존 할 수 있다고 생각했기 때문에 onRetainNonConfigurationInstance를 사용했지만, 안드로이드 내에서 진행되는 다른 것들이 내 데이터를 지울 수 있다는 것을 발견했습니다. 사용자들에 의해보고 된 몇 가지 예 :
- While the app was running, the user took a phone call. After returning to the app, the data was gone.
- While the app was running, another user downloaded an update to a different app from the Market, and found the data gone after returning to the app.
- While the app was running, another user started a different app (a music player), and returned to find the data gone.
내 응용 프로그램이 처음에 번들로 각 선수에 대한 각각의 데이터 필드를 썼다 때문에 onRetainNonConfigurationInstance의 사용은 문제가 있음을 알고, 앱은 그런 식으로, 어떤 문제를 구현하면서 여러 달 동안 겪었습니다.
onRetainNonConfigurationInstance에 대해 알게되고 구현에 사용하자 마자 불만이 접수되기 시작했습니다.
구현이 간단합니다. 다음과 같이 내가 구현 :
몇 가지 근본적인 문제가 나타납니다 때문에mPlayers = (PlayerData [])getLastNonConfigurationInstance();
이 화면에서 사용자 많은 양의 데이터를 유지하기위한 가장 좋은 대안 무엇 :
@Override
public Object onRetainNonConfigurationInstance()
{
return mPlayers; //array of player objects
}
을 다음에서 onCreate에, 나는 이렇게 회전?
어떤 도움을 주셔서 감사합니다!
감사합니다. 질문에 조금 더 추가하겠습니다. 번들이 더 나은 선택이라고 생각했지만 앞으로 나아갈 수있는 최적의 방법은 무엇입니까? 예를 들어 내가 보유하고자하는 100 개의 문자열이 있다고 가정 해 봅시다. 번들에 길이가 다른 100 개의 개별 문자열을 넣는 것이 좋습니까? 또는 일종의 번들 확장을 구현해야합니까? 아니면 이러한 조건에서 더 잘 작동 할 수있는 것이 있습니까? – Michael
The Bundle은 String을 포함한 대부분의 프리미티브에 대한 배열 및 ArrayLists를 취합니다. 게으름을 피우다가 과거에 한 일은 기본적으로 원하는 비트와 조각으로 JSON 객체를 만든 다음 번들로 직렬화하는 것입니다. 반대편에서 비 직렬화하면 갈 수 있습니다. – Femi
감사합니다. Femi,이 시도해 보겠습니다. – Michael