728x90
Toast 같은 경우 UI 메인 쓰레드에서만 동작이 가능하기에
타 쓰레드에서 Toast를 불러와서 사용할수가 없습니다
파이어몽키 타 쓰레드 Toast 관련된 예제는 구글에도 없기에 만들어서 올립니다
타 쓰레드에서 Toast 사용을 하고 싶다면
제가 만들어둔 코드는 아래의 코드로 해야
타 쓰레드에서 Toast 알람 기능을 사용할수가 있습니다
액티비티에도 사용이가능하고 안드로이드 서비스에서도 사용이 가능합니다
//kimsyo5140
uses Androidapi.JNIBridge, Androidapi.JNI.Os, Androidapi.JNI.JavaTypes;
type
KMSRunnable = class(TJavaLocal, JRunnable)
private
ToastStr : string;
public
constructor Create(const TmpStr : string);
procedure run; cdecl;
end;
constructor KMSRunnable.Create(const TmpStr : string);
begin
inherited Create;
ToastStr := TmpStr;
end;
procedure KMSRunnable.run;
begin
TmpToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(ToastStr), TJToast.JavaClass.LENGTH_SHORT).show;
end;
procedure THreadMessageToast(TmpMessage : string);
var ToastHandle : JHandler;
Runnable : JRunnable;
begin
ToastHandle := TJHandler.JavaClass.init(TJLooper.JavaClass.getMainLooper); // 핸들러에 getMainLooper로 초기화 시켜준다
Runnable := KMSRunnable.Create(TmpMessage); // Runnable 변수에 KMSRunnable 객체를 대입 해준다
ToastHandle.post(Runnable); // 핸들러에 Post로 통해 KMSRunnable쪽 객체 전달을 해준다 최종 KMSRunnable.Run 실행
end;
procedure ThreadToastStart;
begin
TTask.Run(procedure
begin
while True do
begin
sleep(3000); // 3초
THreadMessageToast('Toast 테스트중입니다.');
end;
end).Start;
end;
728x90
'FireMonkey 예제 자료' 카테고리의 다른 글
FireMonkey(파이어몽키) Live2D_android.jar sdk 활용한 live2d 실행 (0) | 2023.01.07 |
---|---|
안드로이드 FireMonkey TextView Floating 위젯 파스칼 언어 예제 (0) | 2022.06.26 |
FireMonkey 갤럭시워치4(Wear OS) Edit 내용 작성하기 위해 클릭시 에러 뜨는 현상(임시 조치) (0) | 2022.05.14 |
FireMonkey 안드로이드 서비스 미디어 볼륨 최대 올려주기 (0) | 2022.04.02 |
FireMonkey 안드로이드 화면 켜짐 유지 (0) | 2022.03.20 |
파이어몽키(firemonkey) 코드로 화면 (세로,가로)전환 (0) | 2022.03.14 |
파이어몽키 안드로이드 EUC-KR Encode 인코딩 (0) | 2022.01.18 |
파이어몽키 안드로이드 지정된 폴더에 파일 목록 불러오기 (0) | 2022.01.18 |
댓글