如何从活动中调用服务的方法?

2024-01-19

我只想从我的活动中调用本地服务的方法。我怎样才能做到这一点 ?


这是一个可能有帮助的示例
服务器.java:

package com.example.bindservice.binder;

import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;

public class Server extends Service {

    IBinder mBinder = new LocalBinder();

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    public class LocalBinder extends Binder {
        public Server getServerInstance() {
            return Server.this;
        }
    }

    public String getTime() {
        SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return mDateFormat.format(new Date());
    }
}

客户端.java

package com.example.bindservice.binder;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.bindservice.binder.Server.LocalBinder;

public class Client extends Activity {

    boolean mBounded;
    Server mServer;
    TextView text;
    Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        text = (TextView)findViewById(R.id.text);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                text.setText(mServer.getTime());
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();

        Intent mIntent = new Intent(this, Server.class);
        bindService(mIntent, mConnection, BIND_AUTO_CREATE);
    };

    ServiceConnection mConnection = new ServiceConnection() {
        @Override
        public void onServiceDisconnected(ComponentName name) {
            Toast.makeText(Client.this, "Service is disconnected", 1000).show();
            mBounded = false;
            mServer = null;
        }

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Toast.makeText(Client.this, "Service is connected", 1000).show();
            mBounded = true;
            LocalBinder mLocalBinder = (LocalBinder)service;
            mServer = mLocalBinder.getServerInstance();
        }
    };

    @Override
    protected void onStop() {
        super.onStop();
        if(mBounded) {
            unbindService(mConnection);
            mBounded = false;
        }
    };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从活动中调用服务的方法? 的相关文章

随机推荐

  • UNIX 命令 mv 和 rm 如何处理打开的文件?

    如果我正在读取存储在 NTFS 文件系统上的文件 并且尝试在读取该文件时移动 重命名该文件 我将无法这样做 如果我在 UNIX 文件系统 例如 EXT3 上尝试此操作 它会成功 并且执行读取的进程不受影响 我什至可以 rm 文件并且读取过程
  • 有没有办法保护Python eval 的字符串?

    关于使用Python的eval有很多问题不安全的字符串 eg Python eval 在不受信任的字符串上的安全性 https stackoverflow com questions 661084 security of pythons e
  • 比较序言中两个列表的内容

    我正在做一些家庭作业 但我被困在一个点上 我得到了一些这样的事实 word h e l lo word m a n word w o m a n etc 我必须制定一条规则 以便用户输入一个字母列表 我应该将该列表与我拥有的单词进行比较并纠
  • 如何生成重复字符的排列

    我基本上想创建由三个操作符号组成的字符串 例如 or or 这些字符串中的每一个都应该被推入vector
  • 将 Rails 中的日期时间字符串转换为 UTC

    我有一个像这样的字符串 2010 01 01 12 30 00 我需要将当前本地时区转换为 UTC 我尝试了这个 但似乎认为该字符串已经是 UTC 2010 01 01 12 30 00 to datetime in time zone C
  • MVC4 通过 Ajax.BeginForm 传递模型

    我尝试过遵循一些好帖子 https stackoverflow com questions 5410055 using ajax beginform with asp net mvc 3 razor在这里让它工作 但每次我单击 ajax 回
  • 某些页面上有 https 请求,但并非所有页面上都有 https 请求 zend Framework

    我需要将 https 放在某些 URL 上 但不是所有 URL 上 我正在使用 zend URl view helper 来查看所有链接 我有一个用于整个网站的 example com SSL 证书 现在我打开网站https www exa
  • 与 os.scandir() 引发 AttributeError: __exit__

    An AttributeError当我使用 python 文档中的示例代码时引发 here https docs python org 3 library os html os scandir 示例代码如下 with os scandir
  • ViewPager 或 ScrollView 中的 WebView - Android 3.0+ 上奇怪的渲染错误

    我有一个 ViewPager ViewPager的每一页都是一个ScrollView ScrollView 包含一个 WebView 和几个其他视图 在 Android 2 3 及更早版本上一切正常 但在 3 0 上有一个奇怪的渲染问题 在
  • 制作远程 git 存储库的本地副本

    我对版本控制的术语或实践和程序不是很熟悉 这就是我想做的 我想从互联网上的 git 存储库下载一个文件夹 克隆是正确的方法吗 克隆不会保留不必要的元数据文件吗 有没有办法进行 干净 下载 我想设置一个包含此文件夹的本地存储库 我现在可以在其
  • 当ant运行在JDK1.6中时如何将类编译到JDK1.5

    我的开发环境运行在JDK1 6中 我需要编译一些类 以便它们与运行JDK1 5的客户端兼容 我该如何使用 javac ant 目标来做到这一点 命令行 javac target 1 5 源文件 Ant lt javac srcdir src
  • 在 Java 中通过套接字发送图像的有效方法

    我是一个 Java 菜鸟 我已经阅读了一些有关套接字的基础知识 并且我可以使用 ImageIO 通过套接字成功发送图像 但我想减少发送的数据量 最终 我希望以尽可能小的文件大小尽快发送图像 屏幕截图 现在 我已经这样设置了 imageIO
  • 使用核心数据插入/更新记录的最有效方法?

    我正在开发一个定期从服务器下载数据的应用程序 如果数据需要更新 我会使用类似以下内容来更新记录或插入新记录 如果不存在 let fetchRequest NSFetchRequest
  • Android 中 Paint.StrokeWidth = 1 的绘制线问题

    我想我遇到了一个讨厌的错误 问题是几乎水平的线 带有轻微的渐变并使用 StrokeWidth 1 的 Paint 则不是 绘制 例如 public class MyControl extends View public MyControl
  • 版本号格式的正则表达式

    您能帮我提供以下版本号格式的正则表达式吗 例如2013年1月10日 您可以按照数字 点 数字 点 数字 连字符 数字的模式对数字进行简单匹配 因为groovy 使用 java 引擎 http docs groovy lang org lat
  • 从列表框中删除项目会导致灾难性故障?

    我正在尝试清除 Windows RT 应用程序中列表框的项目 要添加项目 我使用 List
  • Gradle 项目的自定义条件配置

    摘录自https github com gradle gradle blob master build gradle https github com gradle gradle blob master build gradle ext i
  • 理解 strlen 实现中的代码[重复]

    这个问题在这里已经有答案了 我有两个关于实施的问题strlen in string h在 glibc 中 该实现使用带有 漏洞 的幻数 我无法理解这是如何工作的 有人可以帮我理解这个片段吗 size t strlen const char
  • 如何隐藏 WPF 组合框中的所选项目?

    我想从打开的 WPF 组合框中隐藏所选项目 基本上是为了显示而不是这样 item2 item1 item2 item3 this item2 item1 item3 如何才能做到这一点 为什么不更改所选项目的可见性呢
  • 如何从活动中调用服务的方法?

    我只想从我的活动中调用本地服务的方法 我怎样才能做到这一点 这是一个可能有帮助的示例 服务器 java package com example bindservice binder import java text SimpleDateFo