지난번에
안녕하세요
거두절미하고, 제가 어플을 만드는 도중에
서버에 접속해서 스트리밍 영상을 받아와야 하는데요
서버에 접속하고 플레이가 되는 시간이 크게 15초 정도 걸려서
어플을 실행시켰을 때 영상이 나오는데 까지 시간(약 15초) 을
로딩화면을 만들어서 스레드로 웹 서버에 접속하고
로딩화면이 끝나면 메인 액티비티 비디오 뷰에 바로 스트리밍 영상이 뜨게 하려고 합니다.
대충 흐름을 설명드리면,
어플실행->로딩화면(다른 액티비티,스레드에서 서버에 접속)->로딩화면 종료 후 바로 메인 화면->메인화면(바로 스트리밍 영상 출력)
이 정도입니다.
액티비티는 로딩화면과 메인 액티비티 2가지 입니다.
도저히 자료 찾아보고 계속 테스트해봐도 스레드가 안먹는느낌?이 많이 들어서
질문 올립니다!
어플개발선배님들께 좋은 정보 얻었으면 좋겠네요~
코드 올려주시면 감사하겠지만 조언이라도 주셨으면 좋겠습니다^^
- 초보 어플개발자 대학생이...
라고 질문을 올린적이 있었는데요~
댓글에 스레드부분 소스를 보여주면 더 많은 도움 주실 수 있다고 하셔서 소스코드 올려보려합니다.
제가 만든 로딩화면 소스코드입니다.
package com.test.project;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class Loading extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loadingmain);
BackThread thread = new BackThread();
thread.setDaemon(true);
thread.start();
initialize();
}
class BackThread extends Thread {
public void run() {
try {
URL url = new URL("rtsp://v3.cache8.c.youtube.com/CjgLENy73wIaLwmodK76bx8WvRMYESARFEIJbXYtZ29vZ2xlSARSB3JlbGF0ZWRgo5rhoYTNntNODA==/0/0/0/video.3gp);
url.openConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void initialize() {
Handler handler = new Handler() {
public void handleMessage(Message msg) {
finish(); // 액티비티 종료
}
};
handler.sendEmptyMessageDelayed(0, 2000); // ms, 2초후 종료시킴
}
}
위에서 run()안에 구현만 하면 된다고 생각하고 있는데......맞는지 모르겠네요
도움 부탁드립니다~




네 단순히 접속처리에 따른 15초 지연을 방어하기 위한 액티비티가 필요한거 맞죠?
제가 생각하기엔 일단 로딩 액티비티를 하나 만드시고, 단 15초만 실행되고 finish() 되게 하세요.
(빈 화면에 progress bar 하나 돌려놓으시면 되겠죠?)
로딩 액티비티의 onResume에 new Handler(....).postDelayed....(15000); 정도 하시면 되겠네요.
그 후에 위 액티비티의 onResume에
startActivity(로딩액티비티) 하셔서 스래드는 돌려놓으시되,
15초만 실행되고 닫히는 액티비티를 부르면 될거 같아요