Android:如何在服务完成任务时启用按钮?

时间:2013-01-19 07:42:34

标签: java android button android-activity android-service

我在MainActivity.java上有两个按钮 StartButton StopButton 。当我按 StartButton 时,会创建服务,并且StartButton会禁用。按 StopButton 服务销毁,StartButton获取启用

我想要做的是启用我的开始按钮,因为服务已完成其任务;它会在我的MainActivity.java上返回任何通知或触发器类型事件或消息值,因此我的启动按钮会启用。

请给我任何想法,概念或代码,以便我理解。

3 个答案:

答案 0 :(得分: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 中,检查flag的值,

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

但是对于它,你应该将flag的值最初保持为false

然后单击该按钮后,您可以将其设置为不可点击。

答案 1 :(得分:0)

要了解服务和应用程序之间的通信,请查看android developer docs中的示例。 您可以在onServiceDisconnected()和onServiceConnected()方法中启用和禁用按钮。

请记住,默认情况下,该服务在与您的应用相同的线程中运行。

答案 2 :(得分:0)

可以通过多种方式实现这一目标。让我告诉你一个广播接收器。我希望您了解BroadcastReceiver Concepts。

您的活动需要更改

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

2)注册一些动作,假设为“MY_ACTION”。(记得在onPause / onDestroy方法中取消注册此接收器)

3)假设服务完成了它的任务,你进入广播接收器的onReceive方法,现在写你的代码启用/禁用按钮(我希望你知道怎么做)

您的服务需要更改

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

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

3)使用sendBroadcast广播消息,意图为param。你完成了:)

让我知道你是否觉得自己陷入了困境,