Android中Service實(shí)時(shí)向Activity傳遞數(shù)據(jù)實(shí)例分析
本文實(shí)例講述了Android中Service實(shí)時(shí)向Activity傳遞數(shù)據(jù)的方法。分享給大家供大家參考。具體如下:
這里演示一個(gè)案例,需求如下:
在Service組件中創(chuàng)建一個(gè)線程,該線程用來生產(chǎn)數(shù)值,每隔1秒數(shù)值自動(dòng)加1,然后把更新后的數(shù)值在界面上實(shí)時(shí)顯示。
步驟如下:
1、新建一個(gè)android項(xiàng)目工程,取名為demo。
2、新建一個(gè)Service類,用來實(shí)時(shí)生產(chǎn)數(shù)值,供界面實(shí)時(shí)顯示。
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);
//發(fā)送廣播
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、新建一個(gè)Activity類,顯示數(shù)據(jù)。
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);
//啟動(dòng)服務(wù)
startService(new Intent(MainActivity.this, CountService.class));
//注冊(cè)廣播接收器
receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("com.ljq.activity.CountService");
MainActivity.this.registerReceiver(receiver,filter);
}
@Override
protected void onDestroy() {
//結(jié)束服務(wù)
stopService(new Intent(MainActivity.this, CountService.class));
super.onDestroy();
}
/**
* 獲取廣播數(shù)據(jù)
*
* @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>
效果如下:

希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- Android檢測(cè)Activity或者Service是否運(yùn)行的方法
- Android中Service和Activity相互通信示例代碼
- Android中Service與Activity之間通信的幾種方式
- Android Activity與Service通信(不同進(jìn)程之間)詳解
- Android Activity 與Service進(jìn)行數(shù)據(jù)交互詳解
- 淺談Android Activity與Service的交互方式
- Android使用Messenger實(shí)現(xiàn)service與activity交互
- Android實(shí)現(xiàn)Activity、Service與Broadcaster三大組件之間互相調(diào)用的方法詳解
- Android實(shí)現(xiàn)從activity中停止Service的方法
- android使用service和activity獲取屏幕尺寸的方法
- 詳解Android Service與Activity之間通信的幾種方式
相關(guān)文章
flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Android自定義控件之繼承ViewGroup創(chuàng)建新容器
這篇文章主要介紹了Android自定義控件之繼承ViewGroup創(chuàng)建新容器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
android開發(fā)教程之用命令啟動(dòng)android模擬器并設(shè)置其內(nèi)存大小
用命令啟動(dòng)android模擬器并設(shè)置其內(nèi)存大小的方法,,需要的朋友可以參考下2014-02-02
Android—基于微信開放平臺(tái)v3SDK開發(fā)(微信支付填坑)
這篇文章主要介紹了Android—基于微信開放平臺(tái)v3SDK開發(fā)(微信支付填坑),具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Android studio button 按鈕 四種綁定事件的方法【實(shí)例代碼】
這篇文章主要介紹了Android studio button 按鈕 四種綁定事件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法
這篇文章主要介紹了Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法,涉及Android屏幕相關(guān)屬性涉及技巧,需要的朋友可以參考下2016-01-01

