【Android】Service通过广播更新UI
来源:互联网 发布:淘宝3c证书编号是什么 编辑:程序博客网 时间:2024/06/09 16:36
定义一个activity,在activity中定义一个内部广播接收器,并且动态注册该广播接收器:
package com.zzj.ui.serviceUpdateUIDemo;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.widget.TextView;import com.zzj.ui.R;public class MainActivity extends Activity {private TextView textView;public static final String ACTION_UPDATEUI = "action.updateUI";UpdateUIBroadcastReceiver broadcastReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.service_update_ui);textView = (TextView) findViewById(R.id.count_txt);// 动态注册广播IntentFilter filter = new IntentFilter();filter.addAction(ACTION_UPDATEUI);broadcastReceiver = new UpdateUIBroadcastReceiver();registerReceiver(broadcastReceiver, filter);// 启动服务Intent intent = new Intent(this, ServiceUpdateUI.class);startService(intent);}/** * 定义广播接收器(内部类) * * @author lenovo * */private class UpdateUIBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {textView.setText(String.valueOf(intent.getExtras().getInt("count")));}}@Overrideprotected void onDestroy() {System.out.println("onDestroy");super.onDestroy();// 注销广播unregisterReceiver(broadcastReceiver);}}
activity布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="当前人数:" /> <TextView android:id="@+id/count_txt" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>定义一个后台service,该service定时发送广播:
package com.zzj.ui.serviceUpdateUIDemo;import java.util.Timer;import java.util.TimerTask;import android.app.Service;import android.content.Intent;import android.os.IBinder;public class ServiceUpdateUI extends Service {private Timer timer;private TimerTask task;private int count;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();final Intent intent = new Intent();intent.setAction(MainActivity.ACTION_UPDATEUI);timer = new Timer();task = new TimerTask() {@Overridepublic void run() {intent.putExtra("count", ++count);sendBroadcast(intent);}};timer.schedule(task, 1000, 1000);}@Overridepublic void onDestroy() {super.onDestroy();timer.cancel();}}
界面效果:
即使Activity退出再启动,仍然能通过广播接收器得到当前人数。
0 0
- 【Android】Service通过广播更新UI
- 【Android】Service通过广播更新UI
- Service通过广播Broadcast更新Activity UI
- Service通过广播Broadcast更新Activity UI
- Service通过广播Broadcast更新Activity UI
- Service通过广播Broadcast更新Activity UI
- [Android] Service和广播联合更新UI
- Android 通过广播来异步更新UI
- 后台Service通过广播更新UI,Activity通过广播停止Service
- [Android实例] Service和广播联合更新UI的例子
- Android Service和广播联合更新UI的例子
- [Android实例] Service和广播联合更新UI的例子
- Android实例] Service和广播联合更新UI的例子
- Service通过Broadcast更新UI
- Service通过Broadcast更新UI
- Android Service 通知Activity更新界面的方法研究|Service通过Broadcast更新UI
- Android Service 通知Activity更新界面的方法研究|Service通过Broadcast更新UI
- Android Service 通知Activity更新界面的方法研究|Service通过Broadcast更新UI
- Decode Ways
- Linux - 查找目录下的所有文件中是否含某个字符串
- 利用Java Metrics插件度量代码简易教程
- Nginx+Php-fpm+MySQL+Redis源代码编译安装指南
- 利用dnw烧写文件,dnw安装与配置
- 【Android】Service通过广播更新UI
- Linux下编译安装apache
- android EditText中的inputType
- Anniversary party+hdu+树形dp+水之
- MVC 与 三层架构
- POJ 1012 jeseph
- django 页面添加图片 关于静态文件
- 你不是书读得少,你是经典读得少-转载
- 你想成为更好的程序员吗?