Android -- 启动Service并传递数据


本文主要记录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>

时间: 2024-10-21 17:50:47

Android -- 启动Service并传递数据的相关文章

Android中Service通信(一)——启动Service并传递数据

启动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=&

跨应用启动Service并传递数据

启动: 在Android5.0之前可以通过隐式intent启动服务,但是Android5.0之后不可以了. 在两个Application之间是不可能获取到Service的定义的,需要调用SetComponent函数: serviceIntent = new Intent(); serviceIntent.setComponent(new ComponentName("com.wanxiang.www.startservicefromanotherapp", "com.wanx

Android网络编程之传递数据给服务器(二)

Android网络编程之传递数据给服务器(二) 请尊重他人的劳动成果,转载请注明出处:Android网络编程之传递数据给服务器(二) 我曾在<Android网络编程之传递数据给服务器(一)> 一文中介绍了如何通过GET方式传递数据给服务器,通过GET方式传递数据主要适用于数据大小不超过2KB,且对安全性要求不高的情况下.下面就介绍通过POST方式传递数据主到服务器. 一.通过Post方式传递数据给服务器 通过Post方式传递数据给服务器是Android应用程序开发提交数据给服务器的一种主要的方

Android网络编程之传递数据给服务器(一)

Android网络编程之传递数据给服务器(一) 请尊重他人的劳动成果,转载请注明出处:Android网络编程之传递数据给服务器(一) 因为Android程序需要和服务器进行通信,所以需要服务器端提供的支持. 一.通过GET方式传递数据给服务器 通过GET方式上传数据主要适用于数据大小不超过2KB,且对安全性要求不高的情况下. 1.创建服务器端: 服务器端项目结构: 第一步:创建控制器Servlet package com.jph.sgm.servlet; import java.io.IOExc

WebView之js调用Android类的方法传递数据

1,具体的思路如下: 在android中写一个Activity,里面写一个webview,这个webview加载本地的一个html文件,显示这个网页,这个网页包括一个用户名和密码的输入框和两个按钮(只有登陆按钮有用),输入用户名密码之后调用android中的类,并把输入的数据传过去,再在android中输出出来(具体你那数据做什么操作就看你的需求了),这样就做大额js与android数据交互的效果了: 在android端,一些webviwe的设置和自定义类的写法如下源码: package com

Android学习之Intent传递数据

Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据. 一.向下一个Activity传递数据主要是利用Intent作为“信使”来调用, 原Activity需要创建一个intent,并用putExtra(键,值)方法向intent中放入需要传递的信息,然后启动. public void onClick(View view){ String msg =

android 使用静态变量传递数据

使用静态变量传递数据之通用方式. 测试应用:当前页面点击button传递数据到一个新的页面显示在textview中. 首先在,mainActivity.xml文件中加入一个button按钮 <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试

android中activity之间传递数据的3种方式

在android开发中总是需要不停的传递数据,特别是不同的Activity之间.在这里小编介绍自己所知的3种Activity的跳转方式. 第一种:静态传递数据 直接上部分代码:在第一个Activity中 Intent intent = new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); SecondActivity.usrname = "jack"; SecondActivity.password

Android 消息广播Intent传递数据

1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match