제 응용 프로그램에서는 AsyncTask
을 사용하여 트랜잭션의 일부 데이터를 데이터베이스에 쓸 수 있습니다. 이 데이터베이스는 UI 스레드에서도 액세스 할 수 있습니다. 사용 가능한 데이터베이스 메소드를 살펴본 결과 yieldIfContendedSafely()
이 나타났습니다. 이 메서드는 트랜잭션이 별도의 스레드에서 만들어지는 모든 경우에 사용해야합니다. 그러나이 방법에 대한 문서는 거의 다음과 같습니다.Android 다중 스레드 응용 프로그램에서 yieldIfContendedSafely()를 올바르게 사용하십시오.
일시적으로 다른 스레드를 실행할 수 있도록 트랜잭션을 종료합니다. 지금까지 거래가 성공적이라고 가정합니다. 전화를 걸기 전에
setTransactionSuccessful
으로 전화하지 마십시오. 이 때 새로운 트랜잭션이 생성되었지만 성공으로 표시되지는 않습니다. 이것은 중첩 된 트랜잭션이 없다고 가정하고 (beginTransaction
은 한 번만 호출되었습니다) 그렇지 않은 경우 예외를 throw합니다.try { db.beginTransaction(); //insert some stuff into the database here ... // is this how you use this method? boolean yielded = db.yieldIfContendedSafely(); if (yielded) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } db.setTransactionSuccessful(); } catch (SQLException e) { return false; } finally { db.endTransaction(); db.close(); }
이이 방법을 사용하는 올바른 방법인가 : 여기
난 당신이 스레드에서이 방법을 사용한다고 가정 할 어떻게? 동일한 트랜잭션에서 db.yieldIfContendedSafely()
을 두 번 이상 사용하는 것이 좋습니까? 데이터베이스의 여러 테이블에 여러 번 쓰기를 수행할까요? 어떤 제안? 보인다 안드로이드 라이브러리에서 몇 가지 예제 코드를 당기면