码迷,mamicode.com
首页 > 其他好文 > 详细

Service和Activity交互之广播方式

时间:2017-04-23 12:32:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:creat   cte   lag   性能   tco   strong   upd   static   time   

一.使用场景
如果要通知多个Activity,广播较为适合.但广播较为耗费性能.

 

二.Broadcast更新Activity中的UI

1.新建一个接口OnUpdateUI

public interface OnUpdateUI {
    void updateUI(String i);
}

 

2.BroadcastReceiver代码

public class MyBroadcast extends BroadcastReceiver {

    OnUpdateUI onUpdateUI;
    @Override
    public void onReceive(Context context, Intent intent) {
        String progress = intent.getStringExtra("progress");
        onUpdateUI.updateUI(progress);
    }

    public void SetOnUpdateUI(OnUpdateUI onUpdateUI){
        this.onUpdateUI = onUpdateUI;
    }

}

 

3.Activity中代码:

public class MainActivity extends Activity {

    public static final String FLAG = "UPDATE";
    MyBroadcast myBroadcast;
    TextView tip;
    Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tip = (TextView)findViewById(R.id.tip);

        myBroadcast = new MyBroadcast();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(FLAG);
        registerReceiver(myBroadcast, intentFilter);

        intent = new Intent(this, MyService.class);
        
    // 更新UI
        myBroadcast.SetOnUpdateUI(new OnUpdateUI() {
            @Override
            public void updateUI(String i) {
                tip.setText(i);
            }
        });
    }

    protected void myClick(View v){
    // 发送广播
        if( v.getId() == R.id.btn ){
            Intent intent = new Intent();
            intent.setAction(FLAG);
            intent.putExtra("progress", System.currentTimeMillis()+"");
            sendBroadcast(intent);
        }

    // 启动服务
        if (v.getId() == R.id.btn2){
            Intent intent = new Intent(this, MyService.class);
            startService(intent);
        }
    }

    @Override
    protected void onDestroy() {
        unregisterReceiver(myBroadcast);
        stopService(intent);
        super.onDestroy();
    }
}

三.Service发送广播,广播更新Activity中UI

Service发送广播

Intent it = new Intent();
it.setAction(MainActivity.FLAG);
it.putExtra("progress", i+"");
sendBroadcast(it);

 

Service和Activity交互之广播方式

标签:creat   cte   lag   性能   tco   strong   upd   static   time   

原文地址:http://www.cnblogs.com/itfenqing/p/6752105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!