保护android进程相关技术点

保护进程的方法
--------------------


建立一个主开机的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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值