그러냐

PendingIntent Activity가 이미 실행되어 있는 경우 본문

android

PendingIntent Activity가 이미 실행되어 있는 경우

관절분리 2017. 6. 22. 16:21
반응형

PendingIntent 사용시 대상이 되는 Activity가 이미 실행되어 있는 경우에 

실행 중인 Activity가 업데이트 되도록 하기 위해서는 

PendingIntent send flag에 PendingIntent.FLAG_UPDATE_CURRENT를 사용하여야 하며

수신하는 Activity에서는 onNewIntent()를 override하여 전달받은 intent를 사용하면 된다.


[AlertManager.java]

    private void sendAlertMessage(){

        Intent popupIntent = new Intent(mContext, AlertMessageDialog.class);

        popupIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK

                | Intent.FLAG_ACTIVITY_CLEAR_TOP

                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

                | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        popupIntent.putExtra(ExtraDefine.EXTRA_DATABASE_ID, mCheckItem.getDatabaseID());

        popupIntent.putExtra(ExtraDefine.EXTRA_PLAY_ALARM, true);

        popupIntent.putExtra(ExtraDefine.EXTRA_ALERT_MYADDRESS, mCheckItem.getMailAddress());

        //popupIntent.putExtras(getAlertMessageBundle());

        PendingIntent pi = PendingIntent.getActivity(mContext, 0, popupIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        try{

            pi.send();

        }catch(Exception e){

            e.printStackTrace();

        }

    }


[AlertMessageDialog.java]

    @Override

    protected void onNewIntent(Intent intent) {

        Trace.d("onNewIntent");

        updateScreenFromIntent(intent);

        super.onNewIntent(intent);

    }




출처: http://ocsoosoo.tistory.com/73 [옥수수 농장]


반응형