启动Service并传递数据的小实例(通过外界与服务进行通信):

1、activity_main.xml:

  <EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="默认信息"
    android:id="@+id/etData"/>

  <Button
    android:text="启动服务"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/btnStartService" />

  <Button
    android:text="停止服务"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/btnStopService" />

2、MainActivity.java:

  public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      editText = (EditText) findViewById(R.id.etData);
      findViewById(R.id.btnStartService).setOnClickListener(this);
      findViewById(R.id.btnStopService).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
      Intent i = new Intent(this,MyService.class);
      switch(v.getId()){
        case R.id.btnStartService:
          i.putExtra("data",editText.getText().toString());   //获取默认信息
          startService(i);
        break;
        case R.id.btnStopService:
          stopService(i);
        break;
      }
    }
  }

3、MyService.java:

  public class MyService extends Service {

    private boolean running = false;
    private String data = "这是默认信息";

    public MyService() {}

    @Override
    public IBinder onBind(Intent intent) {
      // TODO: Return the communication channel to the service.
      throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
      data = intent.getStringExtra("data");   //获取Intent里面的数据
      return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate() {
      super.onCreate();

      running = true;
      new Thread(){
        @Override
        public void run() {
          super.run();
          while(running){
            System.out.println(data);
            try {
              sleep(1000);
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
            }
         }
       }.start();
    }

    @Override
    public void onDestroy() {
      super.onDestroy();
      running = false;
    }
  }

Android中Service通信(一)——启动Service并传递数据的更多相关文章

  1. Android中startService的使用及Service生命周期

    Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法.本文仅仅探讨纯startService的使用.不 ...

  2. Android 开发 8.0版本启动Service的方法

    前言  google在更新Android8.0后对Service的权限越发收紧.导致目前想要启动服务必需实现服务的前台化(否则在服务启动5秒后,系统将自动报错).下面我们就来看看如何在8.0上启动服务 ...

  3. android中的通信机制总结

      第一种:使用handler来进行通信   handler 大家可以把它想象成主线程(UI线程)的一个子线程,它可以给主线程(UI线程)发送数据从而更新主线程(UI线程)的UI与逻辑,handler ...

  4. Android中实现Activity的启动拦截之----实现360卫士的安装应用界面

    第一.摘要 今天不是周末,但是我已经放假了,所以就开始我们的技术探索之旅,今天我们来讲一下Android中最期待的技术,就是拦截Activity的启动,其实我在去年的时候,就像实现这个技术了,但是因为 ...

  5. Android中线程通信的方式

    Android 跨线程通信 android 中是不允许在主线程中进行 网络访问等事情的因为UI如果停止响应5秒左右的话整个应用就会崩溃,到Android4.0 以后 Google强制规定,与网络相关的 ...

  6. mono for android中使用dapper或petapoco对sqlite进行数据操作

    在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...

  7. Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    http://blog.csdn.net/cjjky/article/details/6441104 在Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSeri ...

  8. 【Android基础】利用Intent在Activity之间传递数据

    前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通.   从一个Activ ...

  9. Android使用JNI实现Java与C之间传递数据(转)

    介绍Java如何将数据传递给C和C回调Java的方法.  java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java.C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需 ...

随机推荐

  1. vim快捷键

    #vim  filename :scriptname //查看vim加载了哪些脚本 :set nu //设置行号 :set tabstop=4 //设置一个tab为4个空格长度 :set ai //设 ...

  2. NRF24L01 无线模块的使用

    NRF24L01 是一款工作在2.4-2.5GHz通用ISM频段的单片收发芯片 工作电压:1.9-3.6V低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象 多频点 ...

  3. Python任务调度模块 – APScheduler

    APScheduler是一个Python定时任务框架,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.并以daemon方式运行应用.目前最新版本为3.0 ...

  4. Ubuntu在wps-office等qt5程序下不能切换中文fcitx输入法的问题

    经检查,是缺了fcitx-qt的包.比如qt5的程序,需要一个叫fcitx-libs-qt5的包. 如果您在基于qt的程序下不能使用基于fcitx的中文输入法,请检查以下包是否已安装: sudo ap ...

  5. django之一些feature

    前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...

  6. js form 表达关于onpress 的一个问题

    <form id="search-form" method="get" action="/search"> <fields ...

  7. PDF/WORD/EXCEL/PPT 文档在线阅读

    查资料看了2种解决方法: 1.通过办公软件dll转换,用flans去看 2.通过Aspose转换成pdf格式,在用js前台读pdf(我用的pdf.js) 今天我解决的就是WORD/EXCEL/PPT ...

  8. MATLAB 成对T检验(paired-ttest)

    学过的统计知识忘光了,飞速恶补了一下能用到的,此篇多有错误今后看到再改= =||| 成对t检验(Paired ttest) 将两组测量值对应相减,再将所得差值看作服从正态分布的随机变量,然后再做关于差 ...

  9. .NET跨平台之旅:成功将示例站点升级至ASP.NET Core RC2

    ASP.NET Core RC2 终于发布了( Announcing ASP.NET Core RC2 ).为了庆祝这次发布,我们将运行在 Ubuntu 服务器上的示例站点 about.cnblogs ...

  10. Dao跨事务调用实现转账功能

    1.首先在数据库当中创建数据库,并且创建它的 实现类 package com.beiwo.epet.entity; public class Account { private int id; pri ...