您的位置:首页 > 编程语言 > PHP开发

ContentProvider,BroadCastReceiver,Service

2015-09-08 20:36 543 查看
1.内容提供ContentProvider

注意加权限

ContentResolver resolver=getContentResolver();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
Cursor cursor = resolver.query(uri, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String[] names = cursor.getColumnNames();
StringBuffer buffer = new StringBuffer();
for (String name : names) {
String value=cursor.getString(cursor.getColumnIndex(name));
buffer.append("字段名:"+name+"  字段值:"+value);
}
Log.d("联系人",""+buffer);
cursor.moveToNext();
}


2.广播接收器Content Provider

必须注册,可在manifest中注册,也可以在代码中动态注册

新建类继承BroadCastReceiver,实现Onreveiver,以此实现接收广播

可以自己写发送广播

Intent intent=new Intent();
intent.setAction("com.lzjy.test1.mybroadcastreceiver");//要与注册时填写的相同才能接收
sendBroadcast(intent);


也可以接收系统发出的广播,写完接收器注册时写系统的action,注意加权限

3.闹钟,利用penddingIntent,以及广播接收器

mAlarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent=new Intent();
intent.setAction("com.lzjy.test1.mybroadcastreceiver");
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0x23,intent,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+5000,3000,pendingIntent);


取消时mAlarmManager.cancel(pendingIntent);

4.Service服务,必须注册后才能使用

写类继承Service,可以实现onCreate,onStartCommand,onDestory

代码中Intent intent=new Intent(getAppliacationcontext(),xxx.class);

startservice(intent)

可显式启动,也可隐式启动,类似Activity

服务Service运行在主线程中,耗时操作必须启动新的线程,多次启动一个服务会调用onStartCommand

对比服务,IntentService自身包含一个线程,可以生成一个消息队列,多次运行多个Intent会在队列中等待运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: