保护进程的方法
--------------------
建立一个主开机的receivecast以startservice()开启两个脱管的service,其中SB接收SA的关闭消息后重开SA,SA接到SB关闭消息时重开SB
动态注册方式
动态注册方式在activity里面调用函数来注册,和静态的内容差不多。一个形参是receiver,另一个是IntentFilter,其中里面是要接收的action。动态注册方式特点:在代码中进行注册后,当应用
程序关闭后,就不再进行监听。
下面是具体的例子:
MainActivity.java
package com.Android.broadcast;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity{
//定义Action常量
protected static final String ACTION = "com.android.broadcast.RECEIVER_ACTION";
private Button btnBroadcast;
private Button registerReceiver;
private Button unregisterReceiver;
private MyReceiver receiver;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnBroadcast=(Button)findViewById(R.id.btnBroadcast);
//创建事件监听器
btnBroadcast.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Intent intent=new Intent();
intent.setAction(ACTION);
sendBroadcast(intent);
}
});
registerReceiver=(Button)findViewById(R.id.btnregisterReceiver);
//创建事件监听器
registerReceiver.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(ACTION);
//动态注册BroadcastReceiver
registerReceiver(receiver, filter);
}
});
unregisterReceiver=(Button)findViewById(R.id.btnunregisterReceiver);
//创建事件监听器
unregisterReceiver.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
//注销BroadcastReceiver
unregisterReceiver(receiver);
}
});
}
}
在“com.android.broadcast”包中定义一个MyReceiver类,继承于BroadcastReceiver,覆盖onReceive()方法。
MyReceiver.java
package com.android.broadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver{
//定义日志标签
private static final String TAG = "Test";
@Override
public void onReceive(Context context, Intent intent){
//输出日志信息
Log.i(TAG, "MyReceiver onReceive--->");
}
}
========================
package com.terry;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class ServiceSample extends Service {
final String TAG="Service";
@Override
public void onCreate()
{
// TODO Auto-generated method stub
super.onCreate();
Log.i(TAG, "onCreate");
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "onDestroy");
}
@Override
public void onStart(Intent intent, int startId)
{
// TODO Auto-generated method stub
super.onStart(intent, startId);
Log.i(TAG, "onStart");
}
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
Log.i(TAG,"onBind");
return null;
}
@Override
public boolean onUnbind(Intent intent)
{
// TODO Auto-generated method stub
Log.i(TAG, "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent)
{
// TODO Auto-generated method stub
super.onRebind(intent);
Log.i(TAG, "onRebind");
}
}
public class Activity1 extends BaseActivity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.a1);
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Activity1.this, Activity2.class);
startActivity(i);
}
});
}
/**
* 捕获手机物理菜单键
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN
myExit();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
protected void myExit() {
Intent intent = new Intent();
intent.setAction("ExitApp");
this.sendBroadcast(intent);
super.finish();
}
}
--------------------
建立一个主开机的receivecast以startservice()开启两个脱管的service,其中SB接收SA的关闭消息后重开SA,SA接到SB关闭消息时重开SB
动态注册方式
动态注册方式在activity里面调用函数来注册,和静态的内容差不多。一个形参是receiver,另一个是IntentFilter,其中里面是要接收的action。动态注册方式特点:在代码中进行注册后,当应用
程序关闭后,就不再进行监听。
下面是具体的例子:
MainActivity.java
package com.Android.broadcast;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity{
//定义Action常量
protected static final String ACTION = "com.android.broadcast.RECEIVER_ACTION";
private Button btnBroadcast;
private Button registerReceiver;
private Button unregisterReceiver;
private MyReceiver receiver;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnBroadcast=(Button)findViewById(R.id.btnBroadcast);
//创建事件监听器
btnBroadcast.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Intent intent=new Intent();
intent.setAction(ACTION);
sendBroadcast(intent);
}
});
registerReceiver=(Button)findViewById(R.id.btnregisterReceiver);
//创建事件监听器
registerReceiver.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(ACTION);
//动态注册BroadcastReceiver
registerReceiver(receiver, filter);
}
});
unregisterReceiver=(Button)findViewById(R.id.btnunregisterReceiver);
//创建事件监听器
unregisterReceiver.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
//注销BroadcastReceiver
unregisterReceiver(receiver);
}
});
}
}
在“com.android.broadcast”包中定义一个MyReceiver类,继承于BroadcastReceiver,覆盖onReceive()方法。
MyReceiver.java
package com.android.broadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver{
//定义日志标签
private static final String TAG = "Test";
@Override
public void onReceive(Context context, Intent intent){
//输出日志信息
Log.i(TAG, "MyReceiver onReceive--->");
}
}
========================
package com.terry;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class ServiceSample extends Service {
final String TAG="Service";
@Override
public void onCreate()
{
// TODO Auto-generated method stub
super.onCreate();
Log.i(TAG, "onCreate");
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "onDestroy");
}
@Override
public void onStart(Intent intent, int startId)
{
// TODO Auto-generated method stub
super.onStart(intent, startId);
Log.i(TAG, "onStart");
}
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
Log.i(TAG,"onBind");
return null;
}
@Override
public boolean onUnbind(Intent intent)
{
// TODO Auto-generated method stub
Log.i(TAG, "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent)
{
// TODO Auto-generated method stub
super.onRebind(intent);
Log.i(TAG, "onRebind");
}
}
public class Activity1 extends BaseActivity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.a1);
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Activity1.this, Activity2.class);
startActivity(i);
}
});
}
/**
* 捕获手机物理菜单键
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN
myExit();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
protected void myExit() {
Intent intent = new Intent();
intent.setAction("ExitApp");
this.sendBroadcast(intent);
super.finish();
}
}