서비스

앱이 실행되어있지 않거나 보이지 않아도 카톡은 다른사람이 보낸 메시지를 받을 수 있다

백그라운드에서 실행되는 서비스가 있기 때문

서비스란 백그라운드에서 실행되는 앱의 구성요소를 말한다

액티비티 처럼 시스템에서 관리한다

액티비티를 만들 때 매니페스트파일에 등록했던 것처럼 새로 만든 서비스도 매니페스트 파일에 꼭 등록해야 한다

서비스를 실행하려면 startService()메서드를 호출 하면 된다

서비스가 비정상적으로 종료되더라도 시스템이 자동으로 재실행한다

startService()메서드를 호출할때 인텐트 객체를 파라미터로 전달

인텐트 객체는 어떤 서비스를 실행할 것인지에 대한 정보를 담고 있다

서비스를 여러번 호출해도 서비스는 이미 메모리에 만들어져있으므로

onService 대신 onStartCommand()메서드를 실행한다

실행된 서비스를 종료하려면 stopService() 메서드 호출

IntentService는 필요한 함수가 수행되고나면 종료된다

IntentService의 함수 (onHandleIntent() : onStartCommand() 메서드로 전달된 인텐트를 전달 받으면서 실행되고 함수실행이 끝나면 종료)

---------------------

 

-------------

패턴

패턴을 알면 정해진대로 만들면 되서 고민을 적게 할 수 있다

MVC패턴의 단점 - update insert 시 뷰에서 전체부분을 다시 셀렉트 해야한다

안드로이드에서는 서버에서 뷰를 리턴하는것이 아니라 변경된 데이터만 돌려준다

그래서 해당부분만 변경해야한다

1 데이터변경

2 UI변경

데이터와 UI를 동기화 시켜야한다 setText 등 - 실수 할 수 있고 해당 UI 부분을 찾기가 엄청 힘들다

MVVM - 모델 / 뷰 / 뷰모델

 

뷰 - 데이터 요청, 

모델 - API서버, 클라우드 서버, 핸드폰 내장DB, DB(DB는 바로 연결할 수 없다, 클라이언트에 DB아이디비번을 넣을수 없으므로)

API에서 가져온 데이터를 DB에 먼저 저장하고 리턴해야한다

뷰모델 - 뷰에 필요한 모든 데이터를 들고 있다(ex User, Posts), 상태관리  

DB에 저장된 데이터를 뷰모델에 저장 + LiveData라는 오브젝트에 넣으면 리액트의 state처럼 된다

(뷰모델은 DB를 구독 -> DB가 변경되면 뷰모델이 자동으로 변경) --> 리액티브 프로그래밍
(현재는 어렵고 클라우드서버에서 연습)

뷰는 뷰모델을 구독만 하고 있으면 된다 -> 뷰모델이 변경되면 UI변경이 자동으로 된다

 

소켓통신의 장점 - 연결이 계속 유지가 됨

http서버는 리퀘스트시에만 연결

구독하려면 최초 리퀘스트시에 소켓을 연결

 

---------------

 

1. tedPermission - 권한

2. 카메라 접근 + 메니페스트

3. Room

4. 데이터베이스 정리

5. IO 쓰레드 사용

6. 이미지 정리

7. 메니페스트 정리

 

LayoutInflater는 어플리케이션콘텍스트를 가져올수 있는 곳이면 어디서든 사용가능

'낙서장' 카테고리의 다른 글

라이엇 api CDN  (0) 2020.08.08
NOSQL (몽고DB)  (0) 2020.08.06
이력서 자기소개서 작성법  (1) 2020.08.05
라이엇 API 정리  (0) 2020.08.03
git // 깃헙 리파지토리 내용 바꾸기  (0) 2020.08.03

 

더보기
Detail.js

하트

좋아요 1

댓글수 2

기본댓글1 내용

기본댓글2 내용



훅스 useState 



App.js에 Detail.js



state
1 comment 배열 2개
2 likeCount



하트를 클릭하면 좋아요 카운트를 올리고 useEffect를 이용해서 색깔이 변하고

좋아요 수가 2로 변함



나중에 댓글을 쓰면 부모의 state 값을 바꿔야한다

 

 

import React, { useState, useRef, useEffect } from "react";
import emptyimg from "./img/empty_heart.png";
import fillimg from "./img/fill_heart.png";

const Detail = () => {
  const [like, setLike] = useState(0);
  const [count, setCount] = useState(2);
  const [nowImg, setNowImg] = useState(emptyimg);
  const img = useRef();

  useEffect(() => {
    console.log("use");
    img.current.src = nowImg;
  }, [like]);

  const fill = () => {
    setLike(like + 1);
    setNowImg(fillimg);
  };

  return (
    <div>
      <div>
        <img onClick={fill} ref={img} />
      </div>
      <div>좋아요{like}</div>
      <div>댓글수{count}</div>
      <div>댓글1</div>
      <div>댓글2</div>
    </div>
  );
};

export default Detail;

 

 

 

 

참고사항

https://20200302wc.tistory.com/474

 

리액트 숙제

https://github.com/jg20228/ReactHooksHomework import React, { useState, useEffect, useRef } from "react"; import logo2 from "./img/logo2.png"; import logo1 from "./img/logo.jpg"; const Detail2 = ()..

20200302wc.tistory.com

 

'Web > ReactJS' 카테고리의 다른 글

리액트 // redux 리덕스  (0) 2020.08.12
리액트 // useEffect 연습  (0) 2020.08.05
리액트 자동완성 스니펫  (0) 2020.08.04
리액트 // hooks 훅스 / useState / useEffect / useMemo / useRef  (0) 2020.08.03
리액트 // 생명주기  (0) 2020.07.29

+ Recent posts