멀티스레딩 환경에서 실행을 메인 스레드에 전달
멀티스레드 프로그래밍, 특히 Android 서비스 내에서 백그라운드 스레드가 필요한 상황이 발생할 수 있습니다. 메인 스레드와 상호 작용합니다. 일반적인 요구 사항은 실행 가능 항목과 같은 작업을 기본 스레드의 메시지 대기열에 게시하는 것입니다.
컨텍스트 참조가 있는 솔루션
백그라운드 스레드가 컨텍스트에 액세스할 수 있는 경우 객체의 경우 애플리케이션 또는 서비스 컨텍스트를 활용하여 기본 핸들러를 얻을 수 있습니다. 스레드:
Handler mainHandler = new Handler(context.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
컨텍스트 참조가 없는 솔루션
백그라운드 스레드에 컨텍스트 참조가 없는 경우 @dzeikei가 제안한 대체 접근 방식을 사용할 수 있습니다. :
Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
위 내용은 Android의 메인 스레드에 실행을 전달하는 방법: 컨텍스트 유무에 관계없이?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!