내 응용 프로그램이 URL에서 파일을 다운로드하는 AsyncTask
을 시작합니다. 동시에 사용자에게 다운로드 완료율을 알려주는 상태 표시 줄 Notification
을 생성합니다.Android : 상태 표시 줄 알림으로 생성 된 PendingIntent에서 AsyncTask에 액세스하려면 어떻게해야합니까?
알림을 클릭하면 내 애플리케이션이 응답하게하려고합니다. 다운로드가 아직 진행 중이면 다운로드를 중지할지 묻는 DialogInterface
을 표시하려고합니다. 예를 클릭하면 다운로드를 중지해야합니다.
문제는 내가 알림을 설정하는 PendingIntent
에서 내 비동기 작업에 액세스하는 방법을 모르겠다는 것입니다. DialogInterface
을 쉽게 표시 할 수는 있지만 다운로드를 중지 할 위치에서 수행 할 활동을 표시하는 방법을 모르겠습니다.
다운로드 할 수있는 파일을 참조하는 File 객체뿐 아니라 알림에 액세스 할 수있는 Helper 클래스를 만들려고했지만 객체가 직렬화되지 않는다는 오류가 발생합니다 (Serializable
구현). 도우미 클래스에는 대화 상자를 표시할지 여부에 대한 조건에 사용할 다운로드 진행률을 보유하는 멤버도 포함되었습니다.
나는 Brodcast 액션과 리시버를 사용할 생각 이었지만 리시버를 어디에 둘지는 잘 모르겠습니다. AsyncTask
을 확장하는 수업에 포함 되나요?
도움을 주시면 감사하겠습니다. Notification
에 첨부 된 PendingIntent
입니다. 더 많은 코드를 보려면 그냥 물어보십시오.
분명히 말해서 나는 ViewDetailActivity
클래스를가집니다. 내부 클래스는 DownloadFile
이고, 확장자는 AsyncTask
이며 사용자가 화면의 버튼을 클릭 할 때 실행됩니다. doInBackground()
메서드가 DownloadFile
인 경우 URL에서 mp3 다운로드가 시작되고 다운로드 한 파일의 양을 기준으로 상태 표시 줄 Notification
이 만들어지고 업데이트됩니다. Notification
의 PendingIntent
은 DownloadNotificationActivity
(코드가 표시됨)으로 만들어지며 "예"가 선택된 대화 상자가 표시되어 AsyncTask
에서 다운로드를 취소해야합니다.
내 문제는 DownloadFile
작업에 다운로드가 취소되었음을 알리고이를 취소하기 위해 DownloadNotificationActivity
에서 DownloadFile
에 액세스하는 방법을 모르겠다는 것입니다.
미리 감사드립니다.
위의 활동에 실제로 'AsyncTask'참조를 전달하는 것이 문제입니다. 나는'AsyncTask'에'Serializable'을 구현하고'PendingIntent'로 설정 한'Intent'에'putExtra()'를 사용하려했지만 객체가 직렬화 가능하지 않다는 예외가있었습니다. AsyncTask에 대한 참조를 내 활동에 전달하는 또 다른 방법이 있습니까? – Shino
좋아, 내가하고있는 방식대로 작동하지 않을 것 같아. 내가 게시 한 알림 작업은 상태 표시 줄 알림을 클릭했을 때만 'PendingIntent'로 사용하기위한 것입니다. AsyncTask는 실제로 파일을 다운로드하기 위해 클릭 할 수있는 화면을 처리하는 클래스에있었습니다. 내 AsyncTask를'DownloadNotificationActivity'로 옮기고 그 클래스의'onCreate'에서 실행할 필요가있는 것 같습니다. 그런 다음 알림을 위해'onClick' 이벤트를 처리하십시오. 무슨 일이 일어나는지 알려 드리겠습니다. – Shino
이전 의견에서 제가 말한 것을 시도해 보았습니다. 당신의 도움에 감사드립니다. @Motes. 더 많은 정보 (하단)로 주제를 업데이트했습니다. 나는 이것이 잘못된 방향으로 가고있는 것처럼 느낍니다. 다른 옵션을 찾아야합니다. 나는'Broadcast'와'BraodcastReceiver'를 시도해 볼 생각 이었지만,'AsyncTask'에 수신기를 얼마나 잘 작동시키는 지 잘 모르겠습니다. – Shino