安卓:如何在服务完成任务后启用按钮?

3
我在MainActivity.java中有两个按钮,一个是StartButton,另一个是StopButton。当我按下StartButton时,会创建一个Service并禁用StartButton。当我按下StopButton时,Service被销毁,StartButton变为启用状态。
我的目标是,在Service完成其任务后,使StartButton变为启用状态。我希望Service能够返回任何通知、触发类型事件或消息值到MainActivity.java中,以便使StartButton变为启用状态。
请给我任何想法、概念或代码,以便我更容易理解。

你正在使用 IntentService 吗? - Mehul Joisar
我通常在这种情况下使用BroadcastReceiver。请查看此教程http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html - Milan
3个回答

0

你试过了吗?

MyButton.setClickable(false);

这将使按钮变为禁用状态。

以及

MyButton.setClickable(true);

它将启用按钮。

但是,如果您想隐藏或显示按钮,可以使用以下方法:

MyButton.setVisibiity(VIEW.VISIBLE);MyButton.setVisibiity(VIEW.INVISIBLE);

编辑- 如果您想在完成任务后启用按钮,可以使用一个标志值为true打开mainActivity,例如:

Intent i= new Intent(getBaseContext(), myActivity.class);
i.putExtra("flag", true);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(i);

并且在mainActivity中检查标志的值,

Boolean flag;
flag = this.getIntent().getBooleanExtra("flag", false);
if(flag == true) {
MyButton.setClickable(true);
}

但是为了实现这个目标,你需要将flag的初始值保持为false

一旦你点击了按钮,就可以将它设置为不可点击状态。


@downvoter:我很想听听您对这个答案的问题,这样我就可以改进它。 - Sahil Mahajan Mj
1
我非常确定ZUBAir hashmi已经知道如何启用/禁用按钮了,问题是如何从“服务”中完成。 - Vladimir Mironov
@vmironov 我已经编辑了答案,为其添加了一些意义。 - Sahil Mahajan Mj
1
好的。但是启动新活动而不是更新现有活动真的是一个很糟糕的想法。 - Vladimir Mironov

0
为了理解服务和应用程序之间的通信,请查看android开发者文档中的示例。您可以在onServiceDisconnected()和onServiceConnected()方法中启用和禁用按钮。
请记住,服务默认情况下在与您的应用程序相同的线程中运行。

0

有很多方法可以实现这个。让我告诉你一个使用广播接收器的方法。我希望你知道广播接收器的概念。

需要在您的活动中进行更改

1)在您的活动中创建一个广播接收器作为内部类。

2)将其注册到某个操作,假设为“MY_ACTION”。(请记住在onPause / onDestroy方法中取消注册此接收器)

3)假设服务完成了其任务,并且您正在广播接收器的onReceive方法中,现在编写代码以启用/禁用按钮(我希望您知道如何执行此操作)

需要在您的服务中进行更改

1)找出您认为其任务已完成的代码。

2)使用相同的操作(“MY_ACTION”)创建一个意图。

3)使用sendBroadcast,将意图作为参数广播消息即可。:)

如果您在任何时候感到困惑,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接