소셜 미디어 Android 애플리케이션에서 AsyncTask 클래스 사용 방법 - AsymTask

Android 애플리케이션에서 AsyncTask 클래스 사용 방법 - AsymTask

차례:

비디오: 될 때까지 안드로이드 #16 [19장 비동기 처리-1] 2024

비디오: 될 때까지 안드로이드 #16 [19장 비동기 처리-1] 2024
Anonim

AsyncTask는 Android 앱을 실행하는 데 시간이 너무 오래 걸릴 때 사용합니다. 예를 들어 사용자가 웹 페이지를 요청합니다. 페이지를 가져 오는 데 걸리는 시간을 누가 알 수 있습니까? 웹 페이지를 호스팅하는 서비스의 볼륨이 높을 수 있습니다. 또는 사용자가 터널을 통과하는 기차에있을 수 있습니다.

모든 종류의 것들이 페이지 검색 속도를 늦출 수 있습니다. 이 검색 중에 사용자는 버튼을 클릭하거나 문서를 스크롤하거나 앱에서 응답해야하는 다른 작업을 수행하려고 할 수 있습니다.

앱이 웹 페이지를 기다리거나, 트위터 타임 라인을 가져 오거나, 사용자의 트위터 상태를 업데이트하는 동안 프로그램을 중단 할 수 없습니다. 이것이 AsyncTask 내부에서 네트워크 요청을 코딩하는 이유입니다.

Android의 AsyncTask는 모든 유형의 값을 다룰 수있는 다기능입니다. 사실, 문서는 AsyncTask를 다음과 같이 정의합니다:

android. OS. AsyncTask

정의에는 Params, Progress 및 Result의 세 가지 일반 유형 자리 표시자가 있습니다. 자신 만의 AsyncTask를 만들 때 Params, Progress 및 Result 대신 실제 유형을 지정하여 "빈 칸을 채 웁니다".

사용자를 대신해 트윗을 추가하려면 Twitter 객체 (factory. getInstance ()로 만든 인스턴스)를 잡고 인스턴스의 updateStatus 메소드. 이 네트워크 요청이 기본 활동의 흐름을 방해하는 것을 원하지 않으므로 요청을 AsyncTask에 넣습니다. 작업의 이름은 MyAsyncTaskTweet입니다. 작업의 세 가지 일반 유형은 다음과 같습니다. String, Void 및 String:

,

String { 첫 번째 유형 (String)은 다음을 나타냅니다. 140 자짜리 짹짹. 코드 execute (editTextTweet. getText (). toString ()) 는 활동 텍스트 필드 중 하나에서 문자열을 가져 와서 해당 문자열을 MyAsyncTaskTweet에 전달합니다. MyAsyncTaskTweet 내에서 doInBackground 메서드는 문자열 tweet [0]을 호출하고 해당 tweet [0] 문자열을 사용하여 사용자의 상태를 업데이트합니다. updateStatus 메소드의 매개 변수는 배열 요소입니다. 왜냐하면 doInBackground 메서드의 헤더에서 tweet는 varargs 매개 변수이기 때문입니다. varargs라는 단어는 "가변 개수의 인수를 의미합니다. "원하는만큼 많은 값을 doInBackground에 전달할 수 있습니다. 이 메서드의 본문에서는 트윗을 일반 배열처럼 처리합니다. 첫 번째 짹짹 값은 트윗 [0]입니다. 두 번째 짹짹 값이 있다면 짹짹 [1], 등등.
  • 두 번째 유형 (Void)은 작업 완료시 백그라운드 스레드의 진행 상태를 나타내는 값 (들)을 나타냅니다.

    진행 표시기가 없으므로 두 번째 유형 이름은 Void입니다.

    Java에서 Void 클래스는 void 값을위한 래퍼 클래스이다. 그것을 무의미한 블랙홀에 넣으십시오!
    

    세 번째 유형 (String)은

    Success와 같은 구문을 나타냅니다!

  • 또는

    짹짹

    에 실패했습니다.

  • doInBackground 메소드는 R. 문자열과 연관된 문자열을 찾습니다. 성공, R. string. twitter_failure 또는 R. string. general_failure를 호출하고이 문자열을 결과로 반환합니다. 그런 다음 onPostExecute 메서드는이 문자열을 화면의 editTextTweet 필드에 표시합니다. 이 이미지는 제네릭 형식 이름이 메서드의 형식에 영향을주는 방식을 요약합니다. MyAsyncTaskTweet에서 유형 사용. 아래 이미지는 MyAsyncTaskTweet에서 값이 한 위치에서 다른 위치로 이동하는 방법을 요약 한 것입니다. MyAsyncTaskTweet의 값 흐름입니다.

    사용자의 타임 라인 가져 오기

하나의 AsyncTask를 본 적이 있다면, 그들 모두를 보았을 것입니다! MyAsyncTaskTimeline 클래스는 MyAsyncTaskTweet과 거의 동일합니다. 유일한 차이점은 다음과 같습니다.

MyAsyncTaskTweet에서 doInBackground에 전달 된 매개 변수는 트윗으로 처리됩니다. 그러나 MyAsyncTaskTimeline에서 doInBackground에 전달 된 매개 변수는 사용자 이름입니다. 코드는이 사용자 이름을 getUserTimeline 메소드에 전달합니다.

MyAsyncTaskTweet에서 doInBackground에서 반환 된 값은 성공 또는 실패 메시지입니다. 그러나 MyAsyncTaskTimeline에서 doInBackground에서 반환 된 값은 트윗 (타임 라인)으로 가득 찬 문자열입니다.

사용자의 타임 라인을 가져 오는 코드는 다음과 같습니다.

List status = null; 상태 = 트위터. getUserTimeline (사용자 이름 [0]);

야마모토 유스케 (Yusuke Yamamoto)라는 사람이 트위터 4J (또는 적어도 Yusuke Yamamoto가 Twitter4J 프로젝트 리더 였음)를 개발했으며, 어느 시점에서 야마모토 (Yamamoto)는 getUserTimeline 메소드가 twitter4J 콜렉션을 반환한다고 결정했습니다. 상태 개체. (각 twitter4J. status 인스턴스에는 하나의 트윗이 포함됩니다.) 따라서 getUserTimeline 메소드를 호출하여 설정된 계약을 존중하기 위해 코드는 상태를 twitter4J 콜렉션으로 선언합니다. 상태 개체.

  • 코드의 몇 줄 뒤에 확장 된 for 문이 상태 값 수집을 단계별로 실행하고 각 값의 텍스트를 큰 결과 문자열에 추가합니다. 루프는 좋은 평가를 위해 각 트위터 뒤에 "n"(자바의 다음 줄 문자)을 추가합니다. onPostExecute 메서드에서 코드는 화면의 textViewTimeline 필드에 큰 결과 문자열을 표시합니다.

  • 두 번째 doInBackground 메소드에서 완전한 이름 인 twitter4j. 상태가 사용됩니다. 이것은 twitter4J를 구분하기 위해 수행됩니다. 안드로이드 자신의 AsyncTask로부터의 상태 클래스. 상태 클래스 (AsyncTask 클래스의 내부 클래스).

AsyncTask는 상당히 복잡 할 수 있습니다. 그러나 Android의 AsyncTask를 DIY 스레딩 대안과 비교할 때 AsyncTask 아이디어가 전혀 나쁘지 않습니다. 사실 약간의 연습을하고 자신 만의 AsyncTask 클래스를 만들면 그렇게 생각하는 데 익숙해집니다. 전체 사업이 매우 자연 스럽다고 느끼기 시작합니다.

Android 애플리케이션에서 AsyncTask 클래스 사용 방법 - AsymTask

편집자의 선택

계획하기 - 인형

계획하기 - 인형

학습 계획 PHR 또는 SPHR 시험을 준비하는 데 사용할 수있는 도구입니다. 따라서 귀하의 학습 계획이 귀하의 필요에 맞게 이루어지기를 바랍니다. 고려해야 할 사항은 시험 날짜, 공부에 바칠 수있는 시간, 귀하의 구체적인 강점 및 목표를 포함해야합니다.

PHR / SPHR 시험을 치러야합니까? - 인형

PHR / SPHR 시험을 치러야합니까? - 인형

일부 유명한 이론가들은 시험을 치러야하거나 마지막 순간 (시험 전주 또는 밤)까지 공부를 연기하는 것은 쓸모 없다고 말합니다. 단기 기억력 증가는 종종 다른 곳에 정보가 손실되는 것을 희생합니다. 왜냐하면 심야 학습이 정상적인 수면 패턴을 위반하는 경우 특히 그렇습니다. 왜냐하면 ...

편집자의 선택

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

디자인 응용 프로그램을 사용하면 컬러 휠에서 색상을 선택할 수 있으므로 Squarespace의 스타일 편집기에서 색상을 선택하면 집에서 편안하게 느낄 수 있습니다. 그러나 컬러 휠을 한번도 본 적이 없다면 사용하기 쉽기 때문에 걱정하지 마십시오. 바퀴에서 색상을 선택하는 방법 색상을 변경하려면 ...

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

귀하의 웹 사이트의 너비와 Squarespace의 텍스트 및 이미지의 크기에 따라 작업 할 무제한 캔버스가있는 것처럼 느낄 수 있습니다. 어떤면에서 이것이 사실이지만, Squarespace는 웹 사이트의 경계를 기본 크기로 설정하는 좋은 일을합니다.

Squarespace에서 상점 설정을 조정하는 방법 - 인형

Squarespace에서 상점 설정을 조정하는 방법 - 인형

사이트 관리자 → 상거래 → 점포 설정으로 이동하면 화면 상단에 상점이 작동하지 않음을 나타내는 큰 노란색 상자가 나타납니다. 스토어를 판매하려면 스토어를 사이트에서 지불을 수락하는 데 사용되는 지불 처리 서비스 인 Stripe에 연결해야합니다. ...

편집자의 선택

이 코드 및 Minecraft - 더미

이 코드 및 Minecraft - 더미

로 무작위 인 경우 > 은 임의로 지정되며 Minecraft에서 코드를 작성할 때 임의의 정수를 사용하여 코드는 임의의 방식으로 동작합니다. 정수는 숫자입니다. LearnToMod의 임의의 정수 수학 블록은 코드가 실행될 때마다 두 숫자 (예 : 1과 10) 사이의 임의의 숫자를 선택합니다. Minecraft에서 정수 사용하기. The ...

Minecraft Minigame - dummy

Minecraft Minigame - dummy

를 디자인하면 게임을 디자인해야합니다. Gameplay Loop는 게임을 재미 있고 도전적이며 완벽하게 진행할 수있는 간단한 과정입니다. Gameplay Loop에는 네 부분으로 구성되어 있습니다. 시작 : 기본 장면을 만듭니다. 목표 : 이기기위한 방법을 추가하고 ...

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

일부 실제 물리학이 게임 내에서 작동한다는 것입니다. 예를 들어, 물을 가지고 얼음을 넣으면 얼어 붙습니다! 좋아요, 현실 세계에서 얼음을 첨가해도 물이 얼지 않을 수도 있지만 더 추워집니다. 당신은 이것을 확인하실 수 있습니다 ...