android 广播更新界面

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask()
        {
            @Override
            public void run()
            {
                // TODO Auto-generated method stub
                if(bStoped){
                    return;
                }
                Message mesasge = new Message();
                mesasge.what = i;
                handler.sendMessage(mesasge);
            }
        }, setting.getInterval(), setting.getInterval());
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
    private LocalBroadcastManager mLocalBroadcastManager;
    private MyBroadcastReceiver mBroadcastReceiver;
//
        //注册广播
        mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
        mBroadcastReceiver = new MyBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ACTION_TYPE_THREAD);
        mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, intentFilter);
//
   @Override
    protected void onDestroy() {
        super.onDestroy();
        //注销广播
        mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
    }

    public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (intent.getAction()) {

                case ACTION_TYPE_THREAD:
                    //更改UI
                    int progress = intent.getIntExtra("progress", 0);
                    tv_status.setText("线程状态:" + intent.getStringExtra("status"));
                    progressbar.setProgress(progress);
                    tv_progress.setText(progress + "%");
                    if (progress >= 100) {
                        tv_status.setText("线程结束");
                    }
                    break;
            }
        }
    }
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

http://blog.csdn.net/u012184853/article/details/50129897

android 广播更新界面

原创 2015年12月01日 15:18:41

转载请注明 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();  
    }  
} 
  • 1
  • 2
  • 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

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

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);  
    }  
}  
  • 1
  • 2
  • 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
  • 53
  • 54
  • 55

源码下载地址

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

 

 

posted @ 2018-03-18 14:54  sky20080101  阅读(50)  评论(0)    收藏  举报