android Hander Service 广播的综合使用案例

来源:互联网 发布:暗黑网络发生的事件 编辑:程序博客网 时间:2024/05/16 08:28

android Hander  Service  广播的综合使用案例

原理:在主activity里启动一个服务,这个服务通过Handler每一秒发送一条广播,并在主activity里注册一个广播接受者(BroadcastReceiver),这个广播接收者的作用在于搜到server的广播,并是的i加1,并且把i的值设置到textview,达到美妙加1的效果

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.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;


public class MainActivity extends Activity {

Button button1;

Button button2;

TextView textView;

publicstaticint i = 0;

publicstatic Handlerhandler;

Intent  intent1;

MyBroadcastReceiver mybroadcast;


@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button1 = (Button)findViewById(R.id.start);

button2 = (Button)findViewById(R.id.stop);

textView = (TextView)findViewById(R.id.number);

button1.setOnClickListener(new OnClickListener() {

@Override

publicvoid onClick(View v) {

handler=new Handler(){

@Override

publicvoid handleMessage(Message msg) {


super.handleMessage(msg);

sendBroadcast(new Intent().setAction("ACTION"));

this.sendEmptyMessageDelayed(1, 1000);

}

};

Log.d("--","-------------------" +"onclick_start");

intent1 =new Intent(MainActivity.this, MyService.class);

startService(intent1);

IntentFilter intentFilter =new IntentFilter();

mybroadcast =new MyBroadcastReceiver();

intentFilter.addAction("ACTION");

MainActivity.this.registerReceiver(mybroadcast, intentFilter);

}

});

button2.setOnClickListener(new OnClickListener() {

@Override

publicvoid onClick(View v) {

unregisterReceiver(mybroadcast);

stopService(intent1);

if(handler !=null){

handler.removeMessages(1);

handler =null;

}

}

});

}

class MyBroadcastReceiverextends BroadcastReceiver{


@Override

publicvoid onReceive(Context context, Intent intent) {

i++;

        if (intent.getAction().equals("android.intent.action.DATE_CHANGED")) {             

        } else if (intent.getAction().equals("ACTION")) {         

        } 

        textView.setText(i + "");

}

}

}


定义一个Service

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;


public class MyService extends Service{


@Override

public IBinder onBind(Intent intent) {

returnnull;

}

@Override

publicvoid onCreate() {

super.onCreate();

}

@Override

publicint onStartCommand(Intent intent,int flags,int startId) {

MainActivity.handler.sendEmptyMessageDelayed(1, 1000);

returnsuper.onStartCommand(intent, flags, startId);

}

@Override

publicvoid onDestroy() {

super.onDestroy();

if(MainActivity.handler !=null){

MainActivity.handler.removeMessages(1);

MainActivity.handler =null;

}

}

}



</activity>

        <serviceandroid:name="com.example.myhandlertest.MyService"></service>   //注意AndroidManifest.xml文件中必须加上这一行

    </application>




运行的效果图:http://img.my.csdn.net/uploads/201303/20/1363786198_1590.png

原创粉丝点击