Android中Service实时向Activity传递数据实例分析
程序员文章站
2023-11-27 18:33:58
本文实例讲述了android中service实时向activity传递数据的方法。分享给大家供大家参考。具体如下:
这里演示一个案例,需求如下:
在service组件中...
本文实例讲述了android中service实时向activity传递数据的方法。分享给大家供大家参考。具体如下:
这里演示一个案例,需求如下:
在service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示。
步骤如下:
1、新建一个android项目工程,取名为demo。
2、新建一个service类,用来实时生产数值,供界面实时显示。
package com.ljq.activity; import android.app.service; import android.content.intent; import android.os.ibinder; import android.util.log; public class countservice extends service { private int count = 0; private boolean threaddisable=false; @override public void oncreate() { super.oncreate(); new thread(new runnable() { @override public void run() { while (!threaddisable) { try { thread.sleep(1000); } catch (interruptedexception e) { e.printstacktrace(); } count++; log.v("countservice", "count is " + count); //发送广播 intent intent=new intent(); intent.putextra("count", count); intent.setaction("com.ljq.activity.countservice"); sendbroadcast(intent); } } }).start(); } @override public ibinder onbind(intent intent) { return null; } @override public void ondestroy() { super.ondestroy(); count=0; threaddisable = true; log.v("countservice", "on destroy"); } }
3、新建一个activity类,显示数据。
package com.ljq.activity; import android.app.activity; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.content.intentfilter; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; public class mainactivity extends activity { private edittext edittext=null; private myreceiver receiver=null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); edittext=(edittext)findviewbyid(r.id.edittext); //启动服务 startservice(new intent(mainactivity.this, countservice.class)); //注册广播接收器 receiver=new myreceiver(); intentfilter filter=new intentfilter(); filter.addaction("com.ljq.activity.countservice"); mainactivity.this.registerreceiver(receiver,filter); } @override protected void ondestroy() { //结束服务 stopservice(new intent(mainactivity.this, countservice.class)); super.ondestroy(); } /** * 获取广播数据 * * @author jiqinlin * */ public class myreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent) { bundle bundle=intent.getextras(); int count=bundle.getint("count"); edittext.settext(count+""); } } }
4、main.xml布局文件
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <edittext android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorvisible="false" android:editable="false" android:id="@+id/edittext"/> </linearlayout>
5、清单文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ljq.activity" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".mainactivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <service android:name =".countservice" /> </application> <uses-sdk android:minsdkversion="7" /> </manifest>
效果如下:
希望本文所述对大家的android程序设计有所帮助。
上一篇: js网站模板素材(网站模板套用教程)