我在 MainActivity.java 上有两个按钮StartButton和StopButton 。当我按下StartButton时,会创建一个Service并且 StartButton 会被禁用。在按下StopButton Service 被破坏并且 StartButton 被启用。
我想做的是在服务完成任务时启用我的开始按钮;它在我的 MainActivity.java 上返回任何通知或触发类型事件或消息值,以便我的开始按钮启用。
请给我任何想法、概念或代码,以使我易于理解。
我在 MainActivity.java 上有两个按钮StartButton和StopButton 。当我按下StartButton时,会创建一个Service并且 StartButton 会被禁用。在按下StopButton Service 被破坏并且 StartButton 被启用。
我想做的是在服务完成任务时启用我的开始按钮;它在我的 MainActivity.java 上返回任何通知或触发类型事件或消息值,以便我的开始按钮启用。
请给我任何想法、概念或代码,以使我易于理解。
可以有很多方法来实现这一点。让我告诉你一个广播接收器。我希望您了解 BroadcastReceiver 的概念。
您的活动需要更改
1)在您的活动中创建一个广播接收器作为内部类。
2) 用一些动作注册它,假设“MY_ACTION”。(记得在 onPause/onDestroy 方法上取消注册这个接收器)
3)假设服务完成了它的任务,并且你进入了广播接收器的onReceive方法,现在编写你的代码来启用/禁用按钮(我希望你知道怎么做)
您的服务中需要更改
1)找出您认为其任务已完成的代码。
2) 创建具有相同操作的意图 ("MY_ACTION")。
3) 使用 sendBroadcast 广播消息,intent 作为参数。你就完成了。:)
让我知道您是否在任何时候觉得自己被卡住了,
你有没有尝试过,
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
.
一旦您单击该按钮,您就可以将其设置为不可点击。
要了解服务和应用程序之间的通信,请查看android 开发者文档中的示例。您可以在 onServiceDisconnected() 和 onServiceConnected() 方法中启用和禁用按钮。
请记住,默认情况下,该服务与您的应用程序在同一线程中运行。