-
本文主要记录Activity传递数据到Service。1、效果图
2、通过以上效果图,可以看出activity页面的数值改变,相应后台service输出的数值也跟着改变。
3、核心代码如下,看代码中的38行,使用Intent作为载体,装载activity页面上的数据。
12
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传过来的值。
12
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>
12
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>
Android -- 启动Service并传递数据
时间: 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