Android 带ProgressDialog的IntentService

Android 带ProgressDialog的IntentService,android,android-service,android-dialog,android-service-binding,Android,Android Service,Android Dialog,Android Service Binding,我正在IntentService中执行长时间运行(最多一分钟)的文件读取操作,同时在我的活动中显示进度对话框 我不发布进度,很简单,请稍候对话框,只需将最终结果传递给活动,这是我通过广播完成的 我有两个问题: 服务正在运行,并显示对话框。用户按下Home按钮,将应用程序置于后台,应用程序处于后台时,服务完成(显示对话框) 我通过在onCreate()和onDestroy()中注册/取消注册我的BroadcastReceiver,而不是onResume()和onPause(),解决了这个问题。这

我正在
IntentService
中执行长时间运行(最多一分钟)的
文件
读取操作,同时在我的
活动
中显示
进度对话框

我不发布进度,很简单,请稍候<代码>对话框,只需将最终结果传递给
活动
,这是我通过广播完成的

我有两个问题:

  • 服务
    正在运行,并显示
    对话框
    。用户按下Home按钮,将应用程序置于后台,应用程序处于后台时,
    服务
    完成(显示
    对话框

    我通过在
    onCreate()
    onDestroy()
    中注册/取消注册我的
    BroadcastReceiver
    ,而不是
    onResume()
    onPause()
    ,解决了这个问题。这样,即使在后台,应用程序也会接收结束广播,并关闭
    对话框

  • 服务
    正在运行,
    对话框
    正在显示,同时发生方向更改
    服务
    显然幸存了下来,但是
    对话框
    消失了

    为了解决这个问题,我在我的
    服务中添加了类似的内容

    boolean running;
    
    public int isRunning() {
        return running;
    }
    
    @Override
    protected void onHandleIntent(Intent intent) {
        running = true;
    
        try {
            // doing stuff
        } catch (Exception e) {
    
        } finally {
            running = false;
        }
    }
    
    然后,在我的
    活动中
    onCreate()
    中更改方向后,我绑定到
    服务
    ,从
    onServiceConnected()
    调用
    isRunning()
    ,并在
    服务
    仍在运行时重新创建
    对话框

关于这两种情况,我的问题是相同的:

有没有更好的方法来处理这些情况


提前感谢。

如果您绑定到您的服务,那么您不需要任何广播:通过
Binder
进行双向通信,另外,不要弹出
对话框
,而是使用一些更微妙的指示器,如
通知
或不确定的
进度条
或something@pskink双向通信需要发送消息,还是可以通过活页夹发送?如果是,怎么做?谢谢,读一下