왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • maskimage
  • imageprocessing
  • yolov8
  • encoding='utf-8'
  • ComputerVision
  • pytorch
  • 기상탐사
  • 컴퓨터비전
  • 영상기술
  • 영상처리
  • pip install labelme
  • unsupervised
  • labelme
  • ckpt_file
  • get_long_description
  • tune()
  • 비지도학습
  • 의료이미징
  • numpy
  • UnboundLocalError
  • 딥러닝
  • PYTHON
  • OpenCV
  • 영상처리역사
  • labelme UnocodeDecodeError
  • PIL
  • TensorFlow
  • alibi-detection
  • alibidetect
  • matplotlib

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

Android Studio

Android - Multi Processing, Multi Threading/ 네트워크 통신을 위한 Volley Library

2023. 2. 3. 12:37
728x90

Multi Processing
- 소프트웨어 앱 단위 cpu가 일을 나눠서 처리
- 앱을 동시에 여러개 실행 가능

Multi Threading
-앱 하나에서도 여러가지 일을 나눠서 처리

 

1. Volley

  •  Android 앱의 네트워킹을 더 쉽고, 무엇보다도 더 빠르게 하는 HTTP 라이브러리

1.1. Volley 라이브러리 호출하기

  • Gradle Scripts - build.gradle (Module ~.app)
  • dependecies 부분에 아래의 문구 추가
implementation 'com.android.volley:volley:1.2.1'


1.2. AndroidManifest.xml 파일 설정

<manifest> 코드 설정

<manifest
android:targetSandboxVersion="1"
>

 

인터넷 권한 설정

    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- 1. 인터넷 권한설정-->

<application>

    <application
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"
        >

2. 사용 방법

2.1. RequestQueue

  • 네트워크 작업 실행, 캐시 읽고 쓰기 및 응답 파싱을 위해 작업자 스레드를 관리
  • Volley.newRequestQueue 메서드를 사용하여 요청을 전송
  • 요청을 생성한 후 add()로 RequestQueue에 추가
  • 요청을 취소하려면 cancel() 호출

2.2. newRequestQueue 사용

  • 기본값으로 RequestQueue를 설정하고 큐를 시작하는 Volley.newRequestQueue 메서드 선언
  • 네트워크 통신을 위한 객체 생성
  • 생성자는 HTTP Method, URL, JsonRequest(전달 데이터), Listener(실행 코드) 입력
  • 설정한 객체의 값을 리퀘스트큐에 요청 생성, add()

2.3. Json Parsing

  • onResponse 메소드에서 API를 호출 하여 Json의 형태로 데이터를 교환
  • 형태에 맞는 데이터타입으로 값을 받아옴
  • 위의 소스 코드에서 예시
    • 1. Json 데이터를 response에 담아 전송
    • 2. 전송된 데이터 키 값의 타입을 맞춰 데이터 호출
    • 3. 저장할 변수에 저장
package com.hyunsungkr.networkapp1;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DownloadManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONObject;
import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

    TextView txtUserId;
    TextView txtId;
    TextView txtTitle;
    TextView txtBody;

    final String URL = "https://jsonplaceholder.typicode.com";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtUserId = findViewById(R.id.txtUserId);
        txtId = findViewById(R.id.txtId);
        txtTitle = findViewById(R.id.txtTitle);
        txtBody = findViewById(R.id.txtBody);

        // Volley로 네트워크 통신한다.
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

        JsonObjectRequest request = new JsonObjectRequest(
                Request.Method.GET, URL + "/posts/1", null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        Log.i("NETWORK_APP",response.toString());

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                }
        );
        // 이 코드가 있어야 네트워크 실행한다.
        queue.add(request);
    }
}

 

'Android Studio' 카테고리의 다른 글

Android - 이미지 처리 Library Glide  (0) 2023.02.07
Android - 액션바 타이틀, Back 버튼 설정법과 / FAB(FloatingActionButton) 사용법  (0) 2023.02.06
Android - 실시간 검색기능 개발 ( TextWathcer )  (0) 2023.02.03
Android - 화면 갱신 함수 notifyDataSetChanged()  (0) 2023.02.02
Android - 다른 Activity로 데이터 전달 시 클래스의 객체를 전달하는 방법 Serializable , putExtra(), getSerializableExtra()  (0) 2023.02.01
    'Android Studio' 카테고리의 다른 글
    • Android - 이미지 처리 Library Glide
    • Android - 액션바 타이틀, Back 버튼 설정법과 / FAB(FloatingActionButton) 사용법
    • Android - 실시간 검색기능 개발 ( TextWathcer )
    • Android - 화면 갱신 함수 notifyDataSetChanged()
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바