Android Studio 의 Debug 런 타임 코드 삽입 방법
배경
다음 코드 보 세 요.
@Data
@ToString
@AllArgsConstructor
public class User {
private String name;
private String sex;
}
public class Client {
private static final String[] NAMES = {" ", " ", " "};
private static final List<User> USERS = Arrays.stream(NAMES)
.map(name -> new User(name, " "))
.collect(Collectors.toList());
public static void main(String[] args) {
for (User user : USERS) {
System.out.println(user);
}
}
}
우리 가 직접 이 코드 를 실행 해서 얻 은 출력 은 다음 과 같다.Client.User(name=미국 팀,sex=남)
Client.User(name=호크,sex=남)
Client.User(name=흑 과부,sex=남)
다음은 이 코드 를 둘러싸 고 설명 하 겠 습 니 다.
노 멀 인 터 럽 트
개발 과정 에서 일반적인 정지점 은 Debug 과정 에서 가장 자주 사용 하 는 편 입 니 다.코드 에 이 유형의 정지점 을 추가 하면 Debug 모드 에서 코드 가 줄 이 바 뀌 면 프로그램 이 걸 린 상태 에 들 어 갑 니 다.이때 우 리 는 현재 의 운행 상 태 를 볼 수 있 습 니 다.그림 과 같 습 니 다.
조건 부 정지점
정지점 을 추가 하 는 방법 은 여러 번 실 행 될 것 입 니 다.우 리 는 프로그램 이 특정한 곳(예 를 들 어 현재 user 가
일 때 만)에서 끊 어 지 기 를 바 랍 니 다.이때 우 리 는 조건 을 빌려 정지점 을 끊 을 수 있 습 니 다.다음 과 같 습 니 다.Condition
부분 을 살 펴 보 세 요.여 기 는 하나의boolean
형식의 값 을 되 돌려 야 합 니 다.이 값 은 프로그램 이 이 줄 코드 를 실행 할 때 정지점 을 진행 하 는 지,true 는 정지점 을 표시 하고 false 는 반대로 합 니 다.위 에 서 는
에 대해 서 만 정지점 을 해 야 하기 때문에 추 가 된Condition
은" ".equals(user.getName())
이다.변수 상태 변경
인 터 럽 트 시의 변수 할당 작업 이 필요 할 때 이 변수의 값 이 변경 되 었 습 니 다.이 때 는
Set Value
방식 을 사용 할 수 있 습 니 다.다음 과 같 습 니 다.Set Value
을 제외 하고 평가 기 를 통 해 값 상 태 를 바 꿀 수 있 습 니 다.다음 과 같 습 니 다.조건 부 정지점+코드 간접 광고
변수 상 태 를 바 꾸 면 변수 값 을 동적 으로 설정 할 수 있 습 니 다.조건 단점 은 단점 을 제어 할 수 있 습 니 다.이 곳 에서 걸 수 있 습 니 다.이 두 가 지 를 결합 하면 프로그램 이 걸 리 지 않 은 상태 에서 동적 코드 로 간접 광 고 를 하 는 효 과 를 얻 을 수 있 습 니 다.
Condition
에 삽 입 된 코드 는 다음 과 같다.
if (" ".equals(user.getName())) {
user.setSex(" ");
}
// false IDE
return false;
이 는 운행 기 코드 의 동적 간접 광 고 를 제공 하 는 것 과 같 으 며,Enable/Disable
정지점 의 상 태 를 통 해 이 부분의 동적 코드 가 실행 되 는 지 여 부 를 열 거나 닫 을 수 있다.우 리 는 이러한 방식 으로 추가 하고 싶 은 코드 를 추가 할 수 있 습 니 다.예 를 들 어 모든 user 대상 print 전에 자체 적 으로 print 를 추가 할 수 있 습 니 다.응용 장면
Debug 기간 에 동적 으로 간접 광 고 를 하 는 응용 장면 이 많 습 니 다.Android 엔 드 에 대응 하여 가끔 은 하나의 변 수 를 바 꾸 고 코드 를 추가 하면 전체 Project 를 다시 실행 해 야 합 니 다.전체 copile 과 install 시간 이 걸 려 야 변경 후의 효 과 를 알 수 있 습 니 다.만약 에 현재 변경 이 잘못 되면 다시 수정 하고 다시 실행 해 야 합 니 다.debug 방식 을 통 해직접 조작 할 수 있 습 니 다.백 엔 드 가 바 뀔 때마다 재배 치 하 는 것 도 마찬가지다.
안 드 로 이 드 장면 을 예 로 들 면 다음 과 같은 코드 는 하나의
imageUrl
인 자 를 받 고 불 러 옵 니 다.
public class ImageActivity extends Activity {
private static final String KEY_CONTENT = "imageUrl";
public static void open(Context context, String content) {
Intent intent = new Intent(context, ImageActivity.class);
intent.putExtra(KEY_CONTENT, content);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.image);
//
String imageUrl = getIntent().getStringExtra(KEY_CONTENT);
Glide.with(this).load(imageUrl).into(imageView);
}
}
코드 를 삽입 하지 않 기 전에 현재 페이지 로 이동 하 는 것 은 이 렇 습 니 다.이때 현재
imageUrl
인 자 를 동적 으로 바 꾸 려 면 Debug 모드 를 하고 동적 코드 간접 광 고 를 통 해imageUrl
변수의 재 할당 을 할 수 있 습 니 다.다음 과 같 습 니 다.간접 광 고 를 추가 한 후 Debug 모드 에 들 어간 다음 에 이 페이지 에 다시 들 어가 면 표 시 된 그림 은 수 정 된 것 으로 바 뀌 었 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.