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

노티로 activity이동시 restapi로 받은 리스트가 null이면 어떻하나요

0 추천
Fcm pendending으로 해당 엑티비티로 이동하려고 하는데

해당 엑티비티가 api로 받은 list를 리사이클러뷰 어댑터에 넘겨줘서 itemcount하는데

이부분에서 list값이 널이 떠버려서 애러가 나는데

아무래도 리스트가 로딩되기전에 엑티비티가 실행되서 그런거같응데 이럴경우 어떻게 해야하나요??ㅠㅠ
초짜개발 님이 2018년 5월 10일 질문

1개의 답변

0 추천

rest 로 받는걸 async 로 해두고 그냥 activity 를 call 하였다면 
rest 쪽에 async 가 끝나는 시점에 activity 를 call 하세요 

리스트가 로딩되기전에 엑티비티가 실행되서

==> 이거 자체가 코딩이 잘못된 형태라는 의미입니다.  

aucd29 (218,390 포인트) 님이 2018년 5월 10일 답변
감사합니다!!
제가 잘몰라서 또 한가지 질문드리자면..
백 그라운드에서 rest 받고 끝나는 시점에서 call을 activity 자체에서 하는건가요??
아니면 pendingIntent에서 정해주는건가요
음 지금 구조가 어떻게 되어 있는지 모르니 일단 질문을 하지요
1. rest api 를 어떻게 호출하고 있나요 ?
2. 지금 activity 는 어떻게 호출하고 있나요 ?
1.MainActivity
 rest api는 retrofit로 list 받아오고 리사이클어답터로 넘깁니다.
  void loadJson() {
        final Intent intent = getIntent();
        id = intent.getStringExtra("loginId");
        pwd = intent.getStringExtra("loginPwd");

        //retrofit 연결
        com.elcsoft.ycpost_ceo.api.Service service = RetroApi.getClient().create(com.elcsoft.ycpost_ceo.api.Service.class);
        retrofit2.Call<PersonDTO> call = service.getPerson(id, pwd);
        call.enqueue(new Callback<PersonDTO>() {
            @Override
            public void onResponse(Call<PersonDTO> call, Response<PersonDTO> response) {
                Log.d("success", response.message());
                listingmain = response.body().getData();

                Log.d("listing", String.valueOf(listingmain));
                adapter = new PersonReceiveAdapter(listingmain, context);
                swipeContainer.setRefreshing(false);
                mRecyclerView.setAdapter(adapter);
                //    pd.hide();

            }
2. 노티 리시브를 받아 넘겨주는 곳에서
        intent = new Intent(this, MainActivity.class);
        Bundle bundle = new Bundle();
        bundle.putInt("msg_id_item", msg_id_item);
        bundle.putInt("talk_id_item", talk_id_item);
              intent.putExtras(bundle);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0/* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);
아 id랑 pwd를 로그인엑티비티에서 안가지고 바로 메인으로가서 그런거였습니다;;
멍청 한 짓햇네요 답변 감사합니다.
뭐 그러면서 늘어가는 거죠 : )
...