마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 서버 db와 실시간 연동

0 추천
안녕하세요 안드로이드와 서버를 연동해서 서버 db에 데이터가 추가되면 안드로이드 Listview에 나타나게 하였는데 DB에 새로운 데이터가 추가되면 버튼을 클릭해 연동 명령어를 실행해야 ListView에 최신화가 됩니다..  버튼을 클릭하지 않고 DB데이터가 최신화되면 자동으로 ListView에 나타내는 방법이 있나요??

while(isRunning){
    new abd.execute();
    try {
        Thread.sleep(5000);
    } catch (Exception e) {
        e.printStackTrace();
    }
}  이런식으로 시간마다 반복할려고 했더니 안되더라구요ㅠㅠ
무국적 (240 포인트) 님이 2019년 4월 8일 질문

2개의 답변

0 추천
  1. 일단 폴링 형태는 좋지 않습니다. 
  2. 데이터를 설정 후 adapter 에 notifyDataSetChanged 를 호출하면 변경된 내용이 적용 됩니다. 
  3. ListView 보다는 RecyclerView 를 사용해보세요 

 

aucd29 (218,390 포인트) 님이 2019년 4월 8일 답변
네 한번 RecyclerView로 변경해서 실행해보겠습니다.
0 추천

DB에 새로운 데이터가 추가 되면, 서버단에서 안드로이드로 푸시 메세지를 날리면 될것 같습니다.

어플에서 푸시가 수신되면  new abd.execute(); 를 호출 하면 됩니다.

뱅구다 (11,280 포인트) 님이 2019년 4월 8일 답변
서버에서 데이터가 추가될때 푸시를 날릴려면 php를 수정해야하나요??
현재 DB에 새로운 데이터는 넣은 php가 이거이고
<?php
    $con = mysqli_connect("localhost", "");

    mysqli_query ($con,"set names utf8");

    $userID = $_POST["userID"];   
    $userChat = $_POST["userChat"];


    $statement = mysqli_prepare($con, "INSERT INTO Chat VALUES (?, ?)");
    mysqli_stmt_bind_param($statement, "ss", $userID, $userChat);
    mysqli_stmt_execute($statement);

    $response = array();
    $response["success"] = true;

    echo json_encode($response);
 ?>   
DB에서 데이터를 받아오는게
<?php
    $con = mysqli_connect("localhost", "");
    mysqli_query ($con,"set names utf8");
    $result = mysqli_query($con, "SELECT * FROM Chat");
    $response = array();

    while($row = mysqli_fetch_array($result)){
        array_push($response, array("userID"=>$row[0], "userChat"=>$row[1]));
    }

    echo json_encode(array("response"=>$response));
    mysqli_close($con);

     ?>
이거입니다.. db에 데이터를 추가하는곳에 코드 수정을 해야하나요??
대학교 졸업작품 준비중인데 이부분에 지식이 많지 않아 어려움이 많네요 ㅠㅠ
https://firebase.google.com/docs/web/setup?hl=ko
파이어베이스의 문서를 참조하세요.
DB에 새로운 데이터를 넣을 때, FCM을 통해서 안드로이드 기기로 푸시 메세지를 보내시면 됩니다.
...