main activity java:
package com.asfman;
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.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class main extends Activity {
/** *//** Called when the activity is first created. */
Button b1,b2,b3,b4;
TestService mService;
ProgressBar pb;
MyReceiver receiver;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button)findViewById(R.id.button1);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
b4=(Button)findViewById(R.id.button4);
b1.setOnClickListener(l1);
b2.setOnClickListener(l3);
b3.setOnClickListener(l2);
b4.setOnClickListener(l4);
pb=(ProgressBar)findViewById(R.id.progressBar1);
tv=(TextView)findViewById(R.id.txt);
}
public class MyReceiver extends BroadcastReceiver {
//自定义一个广播接收器
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("OnReceiver");
Bundle bundle=intent.getExtras();
int a=bundle.getInt("i");
pb.setProgress(a);
tv.setText(String.valueOf(a));
//处理接收到的内容
}
public MyReceiver(){
System.out.println("MyReceiver");
//构造函数,做一些初始化工作,本例中无任何作用
}
}
OnClickListener l1=new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("info", "--------------开始服务-------------------");
startService(new Intent(main.this, TestService.class));
//开始服务
}
};
OnClickListener l2=new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("info", "--------------结束服务-------------------");
stopService(new Intent(main.this, TestService.class));
//结束服务
}
};
OnClickListener l3=new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//注册接收器
Log.i("info", "--------------注册接收器-------------------");
receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("action.asfman");
main.this.registerReceiver(receiver,filter);
}
};
OnClickListener l4=new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("info", "--------------解除注册接收器-------------------");
main.this.unregisterReceiver(receiver);
//解除注册接收器
}
};
}
service java
package com.asfman;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class TestService extends Service {
boolean isStop=false;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.i("info", "--------------onBind绑定-------------------");
return null;
}
public void onCreate(){
Log.i("info", "--------------TestService onCreate-------------------");
super.onCreate();
}
public void onStart(Intent intent,int startId){
Log.i("info", "--------------TestService onStart-------------------");
super.onStart(intent, startId);
new Thread(){//新建线程,每隔1秒发送一次广播,同时把i放进intent传出
public void run(){
int i=0;
while(!isStop){
Intent intent=new Intent();
intent.putExtra("i", i);
i++;
Log.i("info", "--------------TestService i:" +i+"-------------------");
intent.setAction("action.asfman");//action与接收器相同android.intent.action.asfman
sendBroadcast(intent);
Log.i("TAG",String.valueOf(i));
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
@Override
public void onDestroy() {
Log.i("info", "--------------TestService onDestroy-------------------");
isStop=true;//即使service销毁线程也不会停止,所以这里通过设置isStop来停止线程
super.onDestroy();
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.asfman"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="TestService"></service>
</application>
</manifest>
posted on 2011-04-02 17:31
汪杰 阅读(332)
评论(0) 编辑 收藏 引用 所属分类:
Java