3

我在 MainActivity.java 上有两个按钮StartButtonStopButton 。当我按下StartButton时,会创建一个Service并且 StartButton 会被禁用。在按下StopButton Service 被破坏并且 StartButton 被启用

我想做的是在服务完成任务时启用我的开始按钮;它在我的 MainActivity.java 上返回任何通知或触发类型事件或消息值,以便我的开始按钮启用。

请给我任何想法、概念或代码,以使我易于理解。

4

3 回答 3

0

可以有很多方法来实现这一点。让我告诉你一个广播接收器。我希望您了解 BroadcastReceiver 的概念。

您的活动需要更改

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

2) 用一些动作注册它,假设“MY_ACTION”。(记得在 onPause/onDestroy 方法上取消注册这个接收器)

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

您的服务中需要更改

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

2) 创建具有相同操作的意图 ("MY_ACTION")。

3) 使用 sendBroadcast 广播消息,intent 作为参数。你就完成了。:)

让我知道您是否在任何时候觉得自己被卡住了,

于 2013-01-19T09:44:42.777 回答
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.

一旦您单击该按钮,您就可以将其设置为不可点击。

于 2013-01-19T07:50:54.287 回答
0

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

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

于 2013-01-19T08:31:22.613 回答