package Ġcom . pr 0 gram m . app . util Ċ Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ /** Ċ Ġ*/ Ċ object ĠView Utility Ġ{ ĊĠĠĠ Ġprivate Ġval Ġs Next Generated Id Ġ= ĠAtomicInteger ( 1 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġa Ġvalue Ġsuitable Ġfor Ġuse Ġin Ġ[ android . view . View . setId ]. ĊĠĠĠĠ Ġ* ĠThis Ġvalue Ġwill Ġnot Ġcol lide Ġwith ĠID Ġvalues Ġgenerated Ġat Ġbuild Ġtime Ġby Ġa apt Ġfor ĠR . id . ĊĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġgenerated ĠID Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate View Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġs Next Generated Id . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġa apt - generated ĠIDs Ġhave Ġthe Ġhigh Ġbyte Ġnon zero ; Ġclamp Ġto Ġthe Ġrange Ġunder Ġthat . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠnewValue Ġ= Ġresult Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ> Ġ 0 x 0 0 FFFFFF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue Ġ= Ġ 1 Ġ// ĠRoll Ġover Ġto Ġ 1 , Ġnot Ġ 0 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Next Generated Id . compare AndSet ( result , ĠnewValue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ