2014-11-18 4 views
-1

코드의 특정 조건에 따라 달라지는 부울 변수에 변경 사항을 기록해야합니다. 나는 그러한 변화를 추적하기 위해 매 초마다 실행되는 timertask를 가지고있다. 변경이 발생하면 (즉, 변수 변경이 '참'에서 '거짓'으로 변경 될 때)이 이벤트가 발생한 시간을 저장해야합니다. 이러한 모든 이벤트는 나중에 다른 활동에서 검색 할 수 있어야합니다. 나는 putstring 방법을 사용하는 방법에 대한 생각 : 나는 된 SharedPreferences를 사용하거나이 작업을 구현할 수안드로이드에서 주기적으로 데이터를 저장하십시오.

sp_editor.putString("alarm_activated",String.valueOf(System.currentTimeMillis())); 

하지만 매번 무시됩니다 alarm_activated 깨달았다. 그러나 모든 '시간'가치가 필요합니다. 아래와 같이 키 자체에 '시간'을 추가하여 매번 (키, 값) 키를 변경할 수도 있습니다.

sp_editor.putStrng("alarm_activated"+String.valueOf(System.currentTimeMillis(),placeholder); 

이렇게하는 것이 실제로 비효율적 인 것처럼 보입니다.

내가 할 수있는 다른 방법이 있습니까?

답변

1

올바른 방법은 앱에서 사용할 수있는 SQLite 데이터베이스를 설정하고 업데이트하는 것입니다. 그것은 응용 프로그램이 죽으면 데이터 손실에 대한 걱정없이 로컬에서 데이터를 저장하고 검색하는 측면에서 최대의 유연성을 제공합니다. 좋은 점이 있습니다. tutorial

+0

매 초마다 SQLite 데이터를 저장하는 것이 현명한 방법입니까? 다른 두 개의 동시 스레드도 실행 중입니다. – Susheel

+0

매초마다 데이터를 저장 하시겠습니까? 이벤트가 발생할 때 저장하십시오. – C0D3LIC1OU5

+0

사실이지만 이벤트는 잠재적으로 매 초마다 발생할 가능성이 적습니다. 새 스레드를 사용하여 SQLite 데이터베이스를 업데이트 할 수 있습니까? – Susheel

-1

싱글 톤 클래스를 만들고 내부에서 데이터를 저장할 수있는 ListArray를 만듭니다.

다른 앱에서 데이터에 액세스 할 수 있어야하는 경우 Android SQLite를 사용하십시오.

-1

다음과 같은 클래스를 생성 할 수 있습니다. 당신의 TimerTask에서

public class TimeKeeper { 
private static TimeKeeper instance; 

public List<String> timeList = new ArrayList<String>(); 

public static TimeKeeper getTimeKeeper() { 

    if (instance == null) { 
     instance = new TimeKeeper(); 
    } 
    return instance; 
} 

}

당신은

TimeKeeper.getTimeKeeper().timeList.add("Your Time"); 

으로 목록에 시간을 추가 할 수 있으며 다른 활동에서 당신은 매우 쉽게이 동일한 목록에 액세스 할 수 있습니다.

작동하는 경우 표시로 표시하십시오.

// 영구적으로 저장하면 루프를 반복하여 db에 저장할 수 있습니다.

for(Strng time :TimeKeeper.getTimeKeeper().timeList) 
{ 
    db.insertTime(time); //call Your method to insert time string into your db 
} 
+1

앱이 죽으면 모든 기록 된 데이터가 삭제됩니다. 나는이 해결책을 사용하지 않을 것이다. – C0D3LIC1OU5

관련 문제