android 广播更新界面

本文介绍了在Android中如何利用Service结合广播来更新界面。通过在需要时注册广播并启动Service,从Service发送的广播中捕获数据,并在广播接收器中执行界面更新操作。提供了详细的源码下载链接以供参考。

转载请注明 http://blog.csdn.net/u012184853/article/details/50129897

android 更新界面的方式一般包括,接口回调,servcie加广播,handler, 现在先介绍一下广播加service来更新界面

service

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;  

    @Override  
    public IBinder onBind(Intent intent) {  
        return null;  
    }  

    @Override  
    public void onCreate() {  
        super.onCreate();  
        final Intent intent = new Intent();  
        intent.setAction(MainActivity.ACTION_UPDATEUI);  
        timer = new Timer();  
        task = new TimerTask() {  

            @Override  
            public void run() {  
                intent.putExtra("count", ++count);  
                sendBroadcast(intent);  
            }  
        };  
        timer.schedule(task, 1000, 1000);  
    }  

    @Override  
    public void onDestroy() {  
        super.onDestroy();  
        timer.cancel();  
    }  
} 

然后在需要的地方注册广播和开启服务,在广播中获取服务中发送来的广播内容, 在广播里面更新界面

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;

public class MainActivity extends Activity {  

    private TextView textView;  
    public static final String ACTION_UPDATEUI = "action.updateUI";   
    UpdateUIBroadcastReceiver broadcastReceiver;  

    @Override
    protected 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);  
    }  

    /** 
     * 定义广播接收器(内部类) 
     */  
    private class UpdateUIBroadcastReceiver extends BroadcastReceiver {  

        @Override  
        public void onReceive(Context context, Intent intent) {  
            textView.setText(String.valueOf(intent.getExtras().getInt("count")));  
        }  

    }  

    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        // 注销广播  
        unregisterReceiver(broadcastReceiver); 
        // 消除服务  
        Intent intent = new Intent(this, ServiceUpdateUI.class);  
        stopService(intent);  
    }  
}  

源码下载地址

http://download.csdn.net/detail/u012184853/9315919

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值