Vra

Ek het twee drade in 'n Android-aansoek, een is die oog draad, en die ander is die werker draad. Wat ek wil doen, is, slaap die werker draad totdat die oog draad eindig die hantering van die onDraw metode.

Hoe kan ek dit doen? is daar enige wag vir die sein of iets?

Was dit nuttig?

Oplossing

Deel 'n java.lang.Object tussen die twee drade, wie se uitsluitlike doel is om die werker draad vertel wanneer dit sy werk kan voortgaan. Wanneer die werker draad 'n punt waar dit moet slaap bereik, doen dit:

stick.wait();

Wanneer die oog draad eindig sy onDraw werk, dit hierdie beroep:

stick.notify();

Let op die vereiste dat die siening draad besit die monitor op die voorwerp. In jou geval is, moet dit redelik eenvoudig wees om af te dwing met 'n klein sync blok:

void onDraw() {
  ...
  synchronized (stick) {
    stick.notify();
  }
} // end onDraw()

Besoek javadoc vir java.lang.Object op hierdie metodes (en notifyAll, net in geval); hulle is baie goed geskryf.

Ander wenke

As jy 'n hoër vlak concurreny API (met dinge soos Hindernisse) wil, kan jy die backport van die java 5 concurrency API, wat werk op Java 1.3 en bo probeer, en kan werk op Android. Die hou van Object.wait / stel sal werk nie, maar hulle kan 'n bietjie kortaf.

backport-util-konkurrente

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top