精华内容
下载资源
问答
  • 广播接收者

    2016-09-08 15:06:16
    广播接收者的初步使用与理解
  • 使用服务注册特殊广播接收者

    万次阅读 2017-02-23 00:48:56
    1.屏幕的解锁和锁屏广播,属于安卓系统中操作特别频繁的广播事件 2.它在清单文件中注册无效...4.所以,考虑在服务中去注册广播接收者 MainActivity类: package com.itheima74.screenservice; import android.content.I

    1.屏幕解锁与锁屏,属安卓系统操作特别频繁广播事件
    2.在清单文件中注册无效,需在代码中注册
    3.若在MainActivity中注册,当MainActivity销毁时无法接收广播
    4.考虑在服务中注册广播接收者

    MainActivity:

    package com.itheima74.rigisterservice;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		//开启服务
    		Intent intent = new Intent(this,ScreenService.class);
    		startService(intent);
    
    	}
    
    }
    

    ScreenReceiver:

    package com.itheima74.rigisterservice;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    
    public class ScreenReceiver extends BroadcastReceiver {
    	// 当屏幕锁屏或解锁执行该方法
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		String action = intent.getAction();
    		if ("android.intent.action.SCREEN_OFF".equals(action)) {
    			Log.i("手机锁屏了");
    		} else if ("android.intent.action.SCREEN_ON".equals(action)) {
    			Log.i("手机解锁了");
    		}
    	}
    
    }
    

    ScreenService:

    package com.itheima74.rigisterservice;
    
    import android.app.Service;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.IBinder;
    
    public class ScreenService extends Service {
    	private ScreenReceiver receiver;
    	@Override
    	public IBinder onBind(Intent intent) {
    		return null;
    	}
    
    	@Override
    	public void onCreate() {
    		super.onCreate();
    		// 为什么不在Mainactivity中注册?
    		// 因特殊广播接收者在Mainactivity退出后无效,需在后台长期运行
    		receiver = new ScreenReceiver();
    		IntentFilter filter = new IntentFilter();
    		filter.addAction("android.intent.action.SCREEN_OFF");
    		filter.addAction("android.intent.action.SCREEN_ON");
    		registerReceiver(receiver, filter);
    	}
    
    	@Override
    	public void onDestroy() {
    		super.onDestroy();
    		unregisterReceiver(receiver);
    	}
    }
    

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,583
精华内容 2,233
关键字:

广播接收者