Android Asynctask(从alarmmanager执行)回调到ui

Android Asynctask(从alarmmanager执行)回调到ui,android,callback,android-asynctask,Android,Callback,Android Asynctask,我对这个有意见。 我的应用程序有一些由alarmmanager执行的异步任务(如闹钟)。我希望在运行此任务时,如果用户正在使用应用程序的mainactivity,则会显示一个不确定进度条 我看到这个帖子: 它使用一个接口。但由于执行任务的不是我的活动,因此我无法在asynctask中注册侦听器 所以,我被卡住了。有什么想法吗?首先,我建议使用IntentService而不是AsyncTask 其次,在主活动中创建一个内部类,扩展BroadcastReceiver 在活动的onResume()中

我对这个有意见。 我的应用程序有一些由alarmmanager执行的异步任务(如闹钟)。我希望在运行此任务时,如果用户正在使用应用程序的mainactivity,则会显示一个不确定进度

我看到这个帖子:

它使用一个接口。但由于执行任务的不是我的活动,因此我无法在
asynctask
中注册侦听器


所以,我被卡住了。有什么想法吗?

首先,我建议使用
IntentService
而不是
AsyncTask

其次,在主活动中创建一个内部类,扩展
BroadcastReceiver

活动的
onResume()
中注册内部
BroadcastReceiver
的实例,然后在
onPause()
中注销它

让您的第一个
BroadcastReceiver
启动
IntentService
,并让
IntentService
发送一个广播,如果
活动运行,您的
活动的内部
BroadcastReceiver
将监听该广播-然后内部
BroadcastReceiver
可以创建进度条


IntentService
完成它需要做的事情时,让它发送另一个广播,以指示应取消进度条。

那么,如果不在活动中,您在哪里调用asynctask?“由alarmmanager执行(如闹钟)。”-当您说“alarmmanager”时你真的是指安卓
AlarmManager
服务或其他服务创建的警报吗?是的,我正在使用安卓AlarmManager每小时运行一次asynctask,以获取web中的数据。我确实第一次从活动中调用alarmmanger。但是,用户可以退出活动并在几天后返回。更具体地说,alarmmanager触发我在BroadcastReceiveClass上接收的广播,然后执行asynctask。@user1391967:很高兴我能提供帮助。