Android에서 직접 의도 putExtra () Bundle을 사용할 때의 이점 대신
내 안드로이드 응용 프로그램에서 나는 항상 어떤 수의 값을 새로운 전달하기 위해 클래스의 직접 putExtra()
함수를 사용 Intent
하고 Activity
있습니다.
이렇게 :
Intent i = new Intent(this, MyActivity.class);
i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");
startActivity(i);
나는 Bundle
안드로이드 에 대해 알고 있고 사람들이 Bundle
값을 새로 전달하는 데 사용 하는 것을 보았습니다 Activity
.
이렇게 :
Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_USERNAME","my_username");
extras.putString("EXTRA_PASSWORD","my_password");
intent.putExtras(extras);
startActivity(intent);
여기에 두 가지 의심이 있습니다. 을 값 직접 넣어 새 에 전달할 수 난 웬지 -
왜 사용해야 합니까? 직접 대신 사용 하는 것의 장점은 무엇입니까?Bundle
Activity
Intent
Bundle
Intent
putExtra()
별 차이가 없다. 추가를 사용하는 코드는 약간 더 무겁고 (실용적인 응용 프로그램에서는 차이가 없음) 관리하기 약간 더 약간 더 일반적입니다.
언젠가 인 텐트 내부에 정보를 보내기 전에 데이터를 데이터베이스에 구축 화하려는 경우 다음 화입니다. 인 텐트에 PendingBundle에 피드 할 수있는 것이 많은 것이 조금 더 깔끔합니다. 하나의 개체로.
[최신 정보]
설명 (다른 답변으로 인해).
엑스트라 는 가 휴대 할 수있는 추가 번들이므로 번들을 사용하거나 사용하지 않는을 구석으로 사이에 대안이 없습니다 각 의도. 어느 쪽이든을 사용하고 있습니다.
처음 사용할 때 Intent 내부 putExtra
의 mExtras
녹음이 초기화되고 다음의 모든 putExtra가 여기에 있습니다. (특정 종류의 버그를 피하기 위해 의도적으로 사용할 것입니다)
putExtras 는 번들을 의도 넣지에 않습니다 . 대신 현재 인 생성로 복사합니다 putExtra
. (하나가 아닌 두 가지 많은 비용을 지불합니다).
핵심은-를 사용하는 경우 putExtras
여전히 인 텐트 내부의 실제 실제적인 액세스 할 수 없습니다. 그러나-당신은 그것으로 할 수있는 다른 무엇이든에 대한 사본을 가지고 있습니다. (유사한 인 텐트를 많이 사용하는 경우) 다른 인 텐트로 복사하기 위해 주변을 유지하는 것과 같습니다.
추가 장점 : 데이터가 번들에 여러 개의 텐트를 통해 전송할 수 있습니다. (이 경우에만 여러 인 텐트가 전송됩니다).
더 쉽게 분리 할 수있는 것들이 처리하는 코드와 UI 코드를 분리 할 수 있습니다.
대부분의 경우 가능한 가장 간단한 양의 데이터를 전송하기를 원할 것입니다 쓸모가 없습니다 (보통 절차 몇 개, ID ...).
하나의 많은로 여러 데이터 또는 여러 데이터를 통해 보낼 수 있습니다. 또는 다른 방법은 PutExtra ()의 여러 문을 추가하는 것입니다.
그리고 내 지식에 따라 중요한 차이는 없습니다.
'ProgramingTip' 카테고리의 다른 글
db : test : clone, db : test : clone_structure, db : test : load 및 db : test : prepare의 차이점은 무엇입니까? (0) | 2020.10.27 |
---|---|
iPhone / iPad / iPod touch의 색상 감지? (0) | 2020.10.27 |
SQL 약력 러 CPU / 기간 단위 (0) | 2020.10.27 |
입력 유형의 selectionStart / selectionEnd = "number"는 더 이상 Chrome에서 허용되지 않는 언어입니다. (0) | 2020.10.27 |
Visual Studio 2013 : 데이터베이스 프로젝트 MSBuild 오류 (0) | 2020.10.27 |