用Intent给Service传数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Intent给Service传数据相关的知识,希望对你有一定的参考价值。

对数通过intent传递,代码如下:

 

MainActivity

 1 package com.example.zhangmeng.servicedemo;
 2 import android.content.Intent;
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.widget.EditText;
 7 
 8 public class MainActivity extends AppCompatActivity implements View.OnClickListener{
 9     private EditText editText;
10     @Override
11     public void onClick(View v) {
12         switch (v.getId()){
13             case R.id.button_StartService:
14                 Intent intent=new Intent(MainActivity.this,MyService.class);
15                 intent.putExtra("data",editText.getText().toString());
16                 startService(intent);
17                 break;
18             case R.id.button_StopService:
19                 stopService(new Intent(MainActivity.this,MyService.class));
20 
21         }
22 
23     }
24 
25     @Override
26     protected void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         setContentView(R.layout.activity_main);
29         findViewById(R.id.button_StartService).setOnClickListener(this);
30         findViewById(R.id.button_StopService).setOnClickListener(this);
31         editText=(EditText) findViewById(R.id.et);
32 
33 
34 
35 
36     }
37 }

MyService.class

 1 package com.example.zhangmeng.servicedemo;
 2 import android.app.Service;
 3 import android.content.Intent;
 4 import android.os.IBinder;
 5 public class MyService extends Service {
 6     private boolean running=false;
 7     private String data="This is the data";
 8 
 9     @Override
10     public void onCreate() {
11         super.onCreate();
12         running=true;
13         new Thread(){
14             @Override
15             public void run() {
16                 super.run();
17                 while (running){
18                     System.out.println(data);
19 
20                     try {
21                         sleep(1000);
22                     } catch (InterruptedException e) {
23                         e.printStackTrace();
24                     }
25 
26                 }
27             }
28         }.start();
29     }
30 
31     @Override
32     public int onStartCommand(Intent intent, int flags, int startId) {
33         data=intent.getStringExtra("data");
34         return super.onStartCommand(intent, flags, startId);
35     }
36 
37     @Override
38     public void onDestroy() {
39         super.onDestroy();
40         running=false;
41     }
42 
43     @Override
44     public IBinder onBind(Intent intent) {
45         return null;
46     }
47 
48 }

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.zhangmeng.servicedemo.MainActivity">

<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="默认信息"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动服务"
android:id="@+id/button_StartService" />

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

</LinearLayout>

以上是关于用Intent给Service传数据的主要内容,如果未能解决你的问题,请参考以下文章

在Android Studio,用Service播放音乐时,如何根据其他页面传输过来的字符串指定播放哪首音乐?

android开发中service如何接收activity用intent发送来的数据

使用BroadcastReciever传递Intent.EXTRAS

android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口

Android同一应用多个service间传值

Service 保活法之一