비디오를 재생하는 Fragment를 열 때 지연 발생

user1446988

AsyncTask를 사용하여 조각에 비디오를로드하는 동안 원하는 성능을 얻는 데 어려움을 겪고 있습니다.

나는 UI 스레드를 묶는 것 같지만 어디에 있는지 이해하지 못하고 메모리 누수가 보이지 않습니다. 나는 실행을 시도 AyncTask에서 onAttach(), OnCreate(), onCreateView(), 및setUserVisibleHint()

나는 또한 설정 및 사용을 시도했습니다 onPreparedListener()

이러한 모든 시도에서 VideoFragment라이프 사이클이 호출 될 때 여전히 성능 지연이 발생합니다 . 지연으로 인해 raw폴더 에서 비디오를로드하기 때문에 연결을 의미하지는 않습니다 .

여기에 이미지 설명 입력

그래서에서 그것을 전환으로 IntroFragmentDetailsFragment, VideoFragment의 생명주기 (onAttach,에서 onCreate, onCreateView 등) 떨어져 화재, 이것은 내가 "지연"을 참조하십시오 곳 직전이다 DetailsFragment보이게된다.

FragmentsHolder

public abstract class FragmentsHolder extends FragmentActivity{

   @Override
    final protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    mPagerAdapter = new PagerIntroAdapter(super.getSupportFragmentManager(), fragments);
    pager = (ViewPager) findViewById(R.id.view_pager);

    pager.setAdapter(this.mPagerAdapter);
 }
}

FirstSequence

public class FirstSequence extends FragmentsHolder {

@Override
public void init(Bundle savedInstanceState) {

    addSlide(IntroFragment.newInstance("First String","Second String",
            R.drawable.intro_fragment_drawable, 0, 0, 0, Color.parseColor("#4798af"), 1));
    addSlide(DetailsFragment.newInstance("First Details String","Second Details String",
            R.drawable.details_fragment_drawable, 0, 0, 0, Color.parseColor("#4798af"), 1));
    addSlide(FourImagesFragment.newInstance("Title String","Instruction String", R.drawable.image_1, R.drawable.image_2, R.drawable.image_3, 
            R.drawable.image_4, Color.parseColor("#4798af"), 1));
    addSlide(VideoFragment.newInstance(R.raw.my_video,"Video title string","Video subtitle string",
            0, 0, 0, 0, Color.parseColor("#4798af"), 1));

비디오 조각

public class VideoFragment extends Fragment{
   View hackyView;
   private Handler subt_text;
   private static final String ARG_VIDEO_TO_LOAD = "videotoload";
   ...

 public static VideoFragment newInstance(int videoToLoad, String title, String subTitle,int imageDrawable1,int imageDrawable2,int imageDrawable3,int imageDrawable4,int bgColor, int progressCounter){

  VideoFragment sampleSlide = new VideoFragment();

  Bundle args = new Bundle();
  args.putInt(ARG_VIDEO_TO_LOAD,videoToLoad);
  ...

  return sampleSlide;

 }

private int videoToLoad, ....;
private String title, ...;

 @Override
 public void onAttach(Context context) {
    super.onAttach(context);
    System.out.println("VideoFragment OnAttach ");
 }

 @Override
 public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //get args
    if (getArguments() != null && getArguments().size() != 0) {
    videoToLoad = getArguments().getInt(ARG_VIDEO_TO_LOAD);
    ...
    }
    System.out.println("VideoFragment OnCreate ");
   }

 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  View v = inflater.inflate(R.layout.fragment_video, container, false);
  hackyView = v;
  //new loadVideoTask().execute();
  System.out.println("VideoFragment OnCreateView ");
  return vView;
 } 

 @Override
 public void setUserVisibleHint(boolean isVisibleToUser) {
 super.setUserVisibleHint(isVisibleToUser);
   if(isVisibleToUser){
   new loadVideoTask().execute(); 
   }else {

   }
 }

 private class loadVideoTask extends AsyncTask<Object, Object, Object> {

 ProgressDialog pDialog;

 @Override
 protected void onPreExecute() {

    System.out.println("AsyncTask load onPreExecute ");
    DialogMessage = "Loading Video";
    pDialog = new ProgressDialog(getActivity());
    pDialog.setMessage(DialogMessage);
    pDialog.show();
 }

 @Override
 protected Object doInBackground(Object... params) {

    slideUpAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up);
    cv1 = (CardView) hackyView.findViewById(R.id.cv1);
    //Initialize the rest of the Views, animations, etc
    ...
    return hackyView;
 }  

 protected void onPostExecute(Object result) {
    //process result load video
    loadVideo();
    pDialog.dismiss();
 }
}  

private void loadVideo() {
  subt_text = new Handler();
  vid.setVideoURI(Uri.parse(urlpath));
  vid.requestFocus();
  vid.seekTo(seekto);
  //set all views
 }

}

프래그먼트, 라이프 사이클 등에 대한 많은 질문을 읽었지만 구현에서 내가 잘못하고있는 것을 이해하는 데 도움이되도록 이러한 답변을 사용하는 방법을 알아낼 수 없습니다.

user1446988

검은 색 화면이 깜빡이던 프래그먼트 사이를 전환 할 때 보았던 "지연"이 ..

<SurfaceView
    android:layout_width="0px"
    android:layout_height="0px" />

조각의 부모 활동의 xml에. 제 경우에는 FragmentHolder's xml입니다. 왜 이것이 여기에서 작동하는지 설명하는 더 많은 링크와 답변을 찾았습니다. VideoView 내부 조각으로 인해 검은 화면이 깜박입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SharePoint WebPart에 비디오 포함-페이지가 열릴 때 비디오를 재생하지 않음

분류에서Dev

ContentView에서 호스팅 될 때 MediaPlayerElement가 비디오를 재생하지 않는 이유는 무엇입니까?

분류에서Dev

이미지를로드 할 때 열거 형 오류 발생

분류에서Dev

재생 중 또는 재생이 끝날 때 비디오를 탭한 후 사용자 지정 작업

분류에서Dev

Xcode 7 / Swift 2에서 비디오를 재생하려고 할 때 오류 발생

분류에서Dev

비디오를 나열하고 선택시 재생하는 Andriod 응용 프로그램 개발

분류에서Dev

iPhone 앱에서 오디오를 재생하려고 할 때 오류 발생

분류에서Dev

열거되지 않는 개체를 수정할 때 오류 발생

분류에서Dev

하이 엔드 HTPC에서 비디오를 재생하는 동안 지속적인 지연

분류에서Dev

비디오를 ffmpeg와 연결하면 첫 번째 비디오에 오디오 트랙이 없을 때 무음 비디오가 생성됩니다.

분류에서Dev

"명령 내역을 저장하는 동안 오류가 발생했습니다"를 열 때 오류 발생

분류에서Dev

배열에 난수를 추가 할 때 발생하는 문제

분류에서Dev

열거 형 벡터를 추가 할 때 발생하는 문제

분류에서Dev

참조를 재설정 할 때 오류가 발생하지 않는 이유는 무엇입니까?

분류에서Dev

빠른 액세스 폴더를 열 때 지연이 발생하는 Google의 백업 및 동기화를 수정하려면 어떻게해야합니까?

분류에서Dev

키가 존재하지 않을 때 typescript가 오류를 발생시키는 방법이 있습니까?

분류에서Dev

존재하지 않는 경로를 참조 할 때 Azure 웹앱에서 오류가 발생 함

분류에서Dev

함수를 만들 때 오류가 발생하지만 변수가 아닐 때는 왜 발생합니까?

분류에서Dev

Ubuntu 16.04를 MSSQL에 연결할 때 발생하는 문제

분류에서Dev

Reactjs에서 비디오를 재생하지 않고 Youtube 비디오의 길이를 얻는 방법

분류에서Dev

비디오가 나올 때 재생 목록 모드를 유지하도록 VLC 설정

분류에서Dev

토템이 비디오를 재생할 때 중요하지 않은 알림 표시

분류에서Dev

비디오 자동 재생이 때때로 작동하지 않는 경우

분류에서Dev

12.04에서 특정 비디오를 재생하지 않는 토템

분류에서Dev

12.04에서 특정 비디오를 재생하지 않는 토템

분류에서Dev

PotPlayer에서 비디오를 재생하는 동안 소리가 나지

분류에서Dev

PotPlayer에서 비디오를 재생하는 동안 소리가 나지

분류에서Dev

iBeacon 감지 후 비디오를 재생하는 방법은 무엇입니까?

분류에서Dev

ffmpeg : 해당 비디오가 재생 될 때 오버레이 된 비디오에서 오디오를 동기화하는 방법

Related 관련 기사

  1. 1

    SharePoint WebPart에 비디오 포함-페이지가 열릴 때 비디오를 재생하지 않음

  2. 2

    ContentView에서 호스팅 될 때 MediaPlayerElement가 비디오를 재생하지 않는 이유는 무엇입니까?

  3. 3

    이미지를로드 할 때 열거 형 오류 발생

  4. 4

    재생 중 또는 재생이 끝날 때 비디오를 탭한 후 사용자 지정 작업

  5. 5

    Xcode 7 / Swift 2에서 비디오를 재생하려고 할 때 오류 발생

  6. 6

    비디오를 나열하고 선택시 재생하는 Andriod 응용 프로그램 개발

  7. 7

    iPhone 앱에서 오디오를 재생하려고 할 때 오류 발생

  8. 8

    열거되지 않는 개체를 수정할 때 오류 발생

  9. 9

    하이 엔드 HTPC에서 비디오를 재생하는 동안 지속적인 지연

  10. 10

    비디오를 ffmpeg와 연결하면 첫 번째 비디오에 오디오 트랙이 없을 때 무음 비디오가 생성됩니다.

  11. 11

    "명령 내역을 저장하는 동안 오류가 발생했습니다"를 열 때 오류 발생

  12. 12

    배열에 난수를 추가 할 때 발생하는 문제

  13. 13

    열거 형 벡터를 추가 할 때 발생하는 문제

  14. 14

    참조를 재설정 할 때 오류가 발생하지 않는 이유는 무엇입니까?

  15. 15

    빠른 액세스 폴더를 열 때 지연이 발생하는 Google의 백업 및 동기화를 수정하려면 어떻게해야합니까?

  16. 16

    키가 존재하지 않을 때 typescript가 오류를 발생시키는 방법이 있습니까?

  17. 17

    존재하지 않는 경로를 참조 할 때 Azure 웹앱에서 오류가 발생 함

  18. 18

    함수를 만들 때 오류가 발생하지만 변수가 아닐 때는 왜 발생합니까?

  19. 19

    Ubuntu 16.04를 MSSQL에 연결할 때 발생하는 문제

  20. 20

    Reactjs에서 비디오를 재생하지 않고 Youtube 비디오의 길이를 얻는 방법

  21. 21

    비디오가 나올 때 재생 목록 모드를 유지하도록 VLC 설정

  22. 22

    토템이 비디오를 재생할 때 중요하지 않은 알림 표시

  23. 23

    비디오 자동 재생이 때때로 작동하지 않는 경우

  24. 24

    12.04에서 특정 비디오를 재생하지 않는 토템

  25. 25

    12.04에서 특정 비디오를 재생하지 않는 토템

  26. 26

    PotPlayer에서 비디오를 재생하는 동안 소리가 나지

  27. 27

    PotPlayer에서 비디오를 재생하는 동안 소리가 나지

  28. 28

    iBeacon 감지 후 비디오를 재생하는 방법은 무엇입니까?

  29. 29

    ffmpeg : 해당 비디오가 재생 될 때 오버레이 된 비디오에서 오디오를 동기화하는 방법

뜨겁다태그

보관