하나의 Java 클래스에서 Activity로 이벤트를 보내려고합니다.다른 클래스의 활동에 이벤트를 보내는 방법은 무엇입니까?
시나리오는 자바 코드에있는 콜백 함수를 호출하여 네이티브에서 일부 데이터를 갖게됩니다.이 클래스는 처리 한 후에 UI를 업데이트해야합니다. Activity 핸들러의 한 위치에서 UI를 업데이트하려고합니다. (어디서나 runOnUiThread()를 사용하고 싶지 않습니다.)
아래의 방법으로 이벤트를 제대로 보낼 수 없습니다.
첫 번째 접근 방식 :
1) 메시지를 대기열에 게시하고 이러한 함수를 호출하는 함수를 정의하십시오.
2) 위에서 언급 한 함수를 (포인트 1) 호출하려면 컨텍스트가 필요합니다. 컨텍스트 유지 및 반환을위한 정적 변수를 유지하면 활동이 두 번 생성되면 첫 번째 활동에 대한 쓰기 컨텍스트를 얻을 수 없습니다 .
public class Activity1 {
protected static Context myContext = null;
protected Handler myHandler = null;
@override
public void onCreate() {
myContext = this;
myHandler = new Handler();
}
public static Context getMyContext() {
return myContext;
}
public void postEvent1() {
myHandler.sendMessage();
}
}
2 접근법 :
1) 정적 변수로 핸들러를 결정 및 고정 기능의 도움이 복귀. - 내부 변수를 노출시키는 좋은 디자인이 아닙니다.
2) 단점은 두 번째 활동이 생성 될 때와 같습니다.
public class Activity1 {
protected static Handler myHandler = null;
@override
public void onCreate() {
myHandler = new Handler();
}
public static Context getMyHandler() {
return myHandler;
}
}
정적 변수 및 정적 함수를 사용하지 않고 활동 컨텍스트를 가져올 수 있습니까?
아는 사람이라면 지식을 공유하십시오. :)
감사 & 감사합니다,
SSuman185
나를 교정하십시오. 내가 틀렸다면. 귀하의 활동은 "활동"수업을 연장해야합니까? –
Context와 Handler 객체를 생성자의 액티비티에서 클래스로 전달할 수없는 이유는 무엇입니까? – Maep
@Mohan - 예 활동을 연장해야합니다. – Suman