AMcoder - javascript, python, java, html, php, sql

Asynctask-ը չի աշխատում հիմնական թեմայի հետ զուգահեռ

Ես կարդացի մի գրառում asynctask-ի մասին այստեղ, որտեղ ասվում է, որ այն կատարվի հիմնական թեմայի հետ զուգահեռ: օգտագործել այս դասի executeOnExecutor մեթոդը: Կարծում էի, որ ասինկտասկն արդեն զուգահեռ է կատարվում: Ինչ-որ մեկը կարո՞ղ է սա ինձ բացատրել:



Պատասխանները:


1

Շնորհակալություն @Rookie-ին և @Nashe-ին

Ինչ հասկացա, AsyncTask-ը կարող է աշխատել սերիական և զուգահեռ: Երբ AsyncTask-ն աշխատում է սերիական, յուրաքանչյուր առաջադրանք կատարվում է մեկը մյուսի հետևից, այսինքն. Ենթադրենք, որ օգտագործում եք AsyncTask պատկերը ֆայլից վերծանելու համար և ցանկանում եք վերծանել բազմաթիվ պատկերներ ձեր listview-ի համար: Այնուհետև դուք պետք է գործարկեք մի քանի AsyncTask ադապտերի getView()-ի վրա և այս AsyncTask-ից յուրաքանչյուրը կատարվում է սերիական, այսինքն. մեկը մյուսի հետևից:

Բայց քանի որ նոր սարքերն ունեն բազմաթիվ ֆիզիկական միջուկներ, այս սարքերը կարող են միաժամանակ մի քանի թելեր գործարկել: Այս դեպքում ձեր AsyncTask-ից յուրաքանչյուրը կարող է աշխատել միմյանց զուգահեռ:

Բայց դուք չեք կարող կանխատեսել, թե այս թեմաներից որն առաջինը կավարտվի: այսինքն. ցանկի դիտման ձեր 5-րդ շարքը կարող է ավարտել պատկերի վերծանումը ձեր առաջին շարքից առաջ:

Այսպիսով, AsyncTask.executeOnExecutor() (քանի որ API 11) թույլ է տալիս կատարել AsyncTask-ը զուգահեռաբար, իսկ AsyncTask.execute()-ը թույլ է տալիս կատարել AsyncTask սերիական:

Հուսով եմ դա կօգնի ձեզ..

18.11.2015
  • Ըստ Morrison Chang-ի տարածած հղման, ասվում է, որ api 11 asynctask-ից հետո գործարկվում է սերիական, քանի որ այն կատարվել է լռելյայնորեն զուգահեռաբար՝ բլիթից հետո: Այսպիսով, ձեր հայտարարությունը AsyncTask-ից առաջ API 11-ի սերիական գործարկումից առաջ ճիշտ չէ: Բայց դա ինձ լավ պատկերացում է տալիս իմ շփոթության մասին: thnx 18.11.2015
  • Շնորհակալություն ուղղման համար։ Ես կթարմացնեմ իմ պատասխանը 18.11.2015

  • 2

    Նախ պետք է հասկանաք, թե որտեղ ենք օգտագործելու executeOnExecutor մեթոդը, AsyncTask-ը հնարավորություն է տալիս ճիշտ և հեշտ օգտագործել UI շարանը: Այս դասը թույլ է տալիս կատարել ֆոնային գործողություններ և հրապարակել արդյունքները UI շղթայում՝ առանց շղթաների և/կամ մշակողների մանիպուլյացիայի:

    Երբ առաջին անգամ ներկայացվեց, AsyncTasks-ը սերիականորեն իրականացվեց մեկ ֆոնային թեմայի վրա: Սկսած DONUT-ից, սա փոխվեց թելերի լողակի, որը թույլ է տալիս մի քանի առաջադրանքներ կատարել զուգահեռ: Սկսած HONEYCOMB-ից՝ առաջադրանքները կատարվում են մեկ շղթայի վրա՝ զուգահեռ կատարման հետևանքով առաջացած սովորական կիրառական սխալներից խուսափելու համար:

    Եթե ​​իսկապես ցանկանում եք զուգահեռ կատարում, կարող եք կանչել executeOnExecutor-ը (java.util.concurrent.Executor, Object[]) THREAD_POOL_EXECUTOR-ով: Օրինակ, եթե ցանկանում եք միաժամանակ երգ նվագել և ֆայլ ներբեռնել, ապա պետք է օգտագործեք ասինխադրական զուգահեռ կատարում (ASYNCTASK.THREAD_POOL_EXECUTOR)

    18.11.2015
  • Շնորհակալություն ձեր պատասխանի համար: Բայց ես մի կասկած ունեմ, որ երբ ես երգ եմ նվագում, կօգտագործեմ առանձին asynctask, իսկ ֆայլ ներբեռնելիս կօգտագործեմ մեկ այլ: Այս երկուսը առանձին թեմաներով չե՞ն վարվելու: 18.11.2015
  • Թելերի ֆոնդը կարող է առաջադրանքի մի քանի զուգահեռ օրինակներ գործարկել codetheory.in/android-java-executor- շրջանակ 18.11.2015
  • Այո, անշուշտ այդպես է, բայց իմ հարցն այն է, որ երբ ես կատարում եմ երկու տարբեր առաջադրանքներ երկու տարբեր ասինկտային առաջադրանքների վրա, պե՞տք է դրանք զուգահեռաբար կատարել, թե՞ իրենք կաշխատեն զուգահեռաբար: Այն, ինչ ես հասկանում եմ, այն է, որ երբ մենք օգտագործում ենք նույն asynctask իրականացումը, ապա մենք պետք է այն աշխատենք զուգահեռ, քանի որ նույն async իրականացումը սպասում է մեկ առաջադրանքի ավարտին, նախքան մյուսի վրա անցնելը: Բայց երբ մենք օգտագործում ենք տարբեր ասինկտային առաջադրանքներ, ապա կարիք չկա դրանք զուգահեռաբար աշխատեցնել, քանի որ դրանք տարբեր են, և նրանք, անշուշտ, կաշխատեն ասինկտիվների տարբեր օրինակներում: Ուղղեք ինձ, եթե ես սխալվում եմ: @suresh 18.11.2015
  • եթե դուք չեք օգտագործում կատարող, նրանք չեն աշխատի զուգահեռաբար, եթե դուք օգտագործում եք կատարող, նրանք իրենք աշխատում են զուգահեռաբար 18.11.2015
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..