Uma*_*til 4 service android android-activity
我有一个应用程序,它在第一次启动时启动服务.之后,它会定期从服务器中提取数据.
我打开了我的活动,如果有刷新按钮,我已经有了已经在后台获取数据的服务,那时我想要禁用按钮,加载新数据后我必须在活动中显示它并启用刷新按钮.
如果活动未运行,则应显示通知.
所以第二点是最容易做到的.我坚持认为1.如何定期向服务中的活动发送数据?我正在使用数据库来存储数据.
对此有何帮助?
Lau*_*nt' 10
Messenger服务检测到新内容后立即做出反应(请参阅此活动/服务信息安排的Android开发人员帮助部分).以下是双向消息传递的示例(从服务到活动以及从活动到服务).引用文档:
您可以在MessengerService.java(服务)和 MessengerServiceActivities.java(客户端)示例中看到如何提供双向消息传递的 示例.
这是相关部分.
活动中的传入处理程序:
/**
* Activity Handler of incoming messages from service.
*/
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MessengerService.MSG_SET_VALUE:
mCallbackText.setText("Received from service: " + msg.arg1);
break;
default:
super.handleMessage(msg);
}
}
}
/**
* Activity target published for clients to send messages to IncomingHandler.
*/
final Messenger mMessenger = new Messenger(new IncomingHandler());
Run Code Online (Sandbox Code Playgroud)
在服务中,仅显示相关部分:
/**
* Handler of incoming messages from clients.
*/
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
//obtain Activity address from Message
Messenger mClient=msg.replyTo;
try {
// try to send it some mValue
mClient.send(Message.obtain(null,MSG_SET_VALUE, mValue, 0));
} catch (RemoteException e) {
// The client is dead. Remove it
mClient=null;
}
}
}
/**
* Target we publish for clients to send messages to IncomingHandler.
*/
final Messenger mMessenger = new Messenger(new IncomingHandler());
Run Code Online (Sandbox Code Playgroud)
bind通过自己的活动为您提供服务,并定期调用您的某种服务方法来检查新内容.为此,如果您的服务是另一个应用程序,则必须使用aidl(这更难).如果它在同一个包中,我建议你使用更简单的' 本地服务绑定 '| 归档时间: |
|
| 查看次数: |
6633 次 |
| 最近记录: |