本文主要记录Activity传递数据到Service。

1、效果图


2、通过以上效果图,可以看出activity页面的数值改变,相应后台service输出的数值也跟着改变。
3、核心代码如下,看代码中的38行,使用Intent作为载体,装载activity页面上的数据。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<code class="hljs" java="">package com.example.connectservice;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener {
    private EditText edit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.startService).setOnClickListener(this);
        findViewById(R.id.stopService).setOnClickListener(this);
        edit = (EditText) findViewById(R.id.editText1);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.startService:
            Intent i = new Intent(this, MyService.class);
            i.putExtra(data, edit.getText().toString());
            startService(i);
            break;
        case R.id.stopService:
            stopService(new Intent(this, MyService.class));
            break;
        }
    }
}
</code>

4、Service代码如下,详见代码的21行,我们在onStartCommand方法中通过intent参数获取activity传过来的值。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<code class="hljs" java="">package com.example.connectservice;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.EditText;
public class MyService extends Service {
    String data;
    boolean running = false;
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        data = intent.getStringExtra(data);
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public void onCreate() {
        super.onCreate();
        running = true;
        new Thread() {
            public void run() {
                while (running) {
                    System.out.println(Service中获取到的数据: + data);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
        }.start();
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        running = false;
    }
}
</code>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code class="hljs" xml=""><manifest android:versioncode="1" android:versionname="1.0" package="com.example.connectservice" xmlns:android="http://schemas.android.com/apk/res/android"><uses-sdk android:minsdkversion="8" android:targetsdkversion="21">
     
         
            <intent-filter>
                 
                <category android:name="android.intent.category.LAUNCHER">
            </category></action></intent-filter>
        </activity>
        <service android:enabled="true" android:exported="true" android:name=".MyService">
        </service>
    </application>
</uses-sdk></manifest>
</code>

转载于:https://www.cnblogs.com/cityking/p/a017.html

Android -- 启动Service并传递数据相关推荐

  1. android 启动服务同时传递数据,Android Studio开发基础之起动Service,并通过从Activity向Service传递数据...

    Android Studio开发基础之启动Service,并通过从Activity向Service传递数据 本实例演示启动Service,并通过从Activity向Service传递数据,新建一个Se ...

  2. android 剪切板广播发送者,Android使用剪切板传递数据

    Android使用剪切板传递数据 发布时间:2020-08-30 14:15:07 来源:脚本之家 阅读:62 作者:Ben_love_Nicole 在Activity之间传递数据还可以利用一些技巧, ...

  3. Android在片段之间传递数据

    In this tutorial, we'll be developing an application that contains TabLayout, ViewPager and Fragment ...

  4. android 启动service报错,Android小经验

    转载自:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404388098&idx=1&sn=8bbbba7692dc ...

  5. android finish()传参数,48. (android开发) activity间传递数据(打开浏览器、拨号盘、传参)...

    在 android 中多个 activity 中互相访问是常见的一种操作,比如:打开系统浏览器.显示系统拨号盘等等. 做这些操作的时候,自然是需要传递一些数据过去,比如:要打开的网址.要拨打的电话号码 ...

  6. android启动Service和ForegroundService

    最近有个需求需求"开启前台服务,然后进行持续定位" 没有用过特此记录一下 之前用的都是Service class SocketService : Service() {privat ...

  7. android 不同activity之间传递数据

    1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...

  8. Android 中activity中传递数据的方式

    方式一 通过Intent进行数据传递(日后更新) 方式二 通过剪切板进行数据的传递 首先在第一个Activity中,设置所要进行传递的数据 /*** 通过剪贴板传递字符串数据的操作**/private ...

  9. 5、android使用意图传递数据之全局变量传递

    实例: 1.layout的代码 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ap ...

最新文章

  1. JS 获取指定时间的时间戳(兼容各个浏览器)
  2. 河南理工大学python挂科率_河南高校2021届保研率排名,上榜仅有10所,河南理工大学第6...
  3. 如何攻破容器持久化存储挑战?
  4. CPU是什么?GPU是什么?有图有真相。
  5. redis中KEYS替代命令
  6. 限定通配符和非限定通配符_为什么我不信任通配符以及为什么我们仍然需要通配符...
  7. python绘制剖面图_用python绘制剖面图
  8. html 页面怎么加载富文本,UILabel加载html富文本
  9. php上传虚假图片,解决PHP上传多个图片并校验的代码问题
  10. c++中两个头文件定义同名类的解决办法
  11. VB.Net程序设计:分页控件
  12. 金蝶kiss专业版财务软件下载。
  13. 2013总结之“酒肉穿肠过,佛在心中坐”
  14. 京东返利PHP采集关键字,PHP实现京东API的授权HASH算法
  15. TLF 使用详解!!
  16. 不同计算机通过家庭组无法共享的是,windows7开家庭组与其他版本系统共享文件失败的解决方法...
  17. Unity中的3D数学—02向量与矩阵
  18. DSP28335 CAN模块例程
  19. Android 从WebServer 获取PDF转图片
  20. 这样写的邮件,客户回复率几乎高达100%

热门文章

  1. 关于power shell
  2. pfx导入后仍然打不开加密文件_天正CAD图纸加密和解密方法
  3. python名称空间_python基础:名称空间与作用域
  4. 吐槽 git 的一些愚蠢的接口设计: add/delete/remove/rm 选项随心所欲, 缺乏一致性
  5. 开源GIS(十五)——openlayers通过geoserver中WFS删除要素
  6. JavaWeb——Mybatis进阶mapper代理
  7. golang log模块之log4go使用介绍
  8. 【java学习之路】(java SE篇)012.网络编程
  9. 每天Leetcode 刷题 初级算法篇-数学问题-计数质数
  10. 安装JDK失败,再次安装时出现已经安装过了的,解决办法