android api总结(3)

1 Activity的启动模式
1.1 standard标准启动模式
standard是android系统默认的activity启动模式,activity的任务栈中记录所有用户对每个Activity的操作;
以下需要在清单文件中Activity标签下配置:
1.2 singleTop启动模式
singleTop是单顶模式,记录当前的Activity,如果要入栈的activity在栈中已经存在,那么将不对当前的acitivty
进行入栈操作,通常用在用户快速退出应用的场景,比如浏览器的书签;
1.3 singleTask启动模式
singleTask是,如果当前的activity在栈中已经存在,那么如果出现这个activity的入栈操作将会清空栈中存在的那个
activity之上的activity并且复用该activity;常见的应用场景就是系统的浏览器,因为浏览器的启动需要涉及到很多
底层的操作,系统为了保证它能快速的启动并且保证只存在一个这样的应用,将其activity做成singleTask的;
1.4 singleInstance
这是单实例模式,相当于是java中的单态模式,能够保证在整个系统中只存在一个这样的实例对象,它是不放在当前的
应用栈中的,系统单独为他开辟一个新的任务栈,一般栈中也只存在一个实例;
2 BroadCastReceiver广播接受者
2.1 广播接收者的两种建立方式
2.1.1 在清单文件中配置广播接受者的组件标签
定义 receiver的name属性;
在意图过滤器<intent-filter>
设置action和Category的标签用于过滤广播
2.1.2 在代码中使用RegisterBroadCast的方法注册广播
接收的参数有recevier类和Intentfilter;receiver实现类中处理
广播接收的接收到消息的处理;intentfilter是过滤广播;
在组件中的代码方式注册的广播接收者,应该在使用完成后注销掉广播
接收者 unRegisterBroadCast(receiver;)


2.2 采用广播接受者接收用户的短信;
2.2.1 注册广播接收者
<receiver android:name=".transaction.PrivilegedSmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
2.2.3 采用代码建立广播接收类继承Broadcast类
在清单文件中配置意图过滤器,将优先级设置为最高;
2.3 采用广播接收者实现ip拨号;
2.2.1 注册对外拨号的广播接受者;
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
2.2.1 建立广播接收者,实现对外拨号的拦截并进行ip号添加后拼接重新放置如data中;
2.4 自定义广播的发送与接收;
2.2.2 在清单文件或关心广播的组件中建立起广播接收者;
2.4.2 建立广播发送者;
Intent intent = new Intent();
intent.setAction("xxxx");
intnet.addCategory("xxxx");
intent.sendBroadCast();
2.5 receiver 的生命周期; 10s
2.6 广播接收者的类型 有三种方式
2.6.1 sendBroadcast方式任意注册了广播接收者的广播都能接收到广播;
2.6.2 sendorderBroadcast 方式采用了伪同步的方式接收广播;关心道priority
高优先级的广播可以终止掉广播,并且可以给广播添加数据让低优先级的接受者使用;
2.6.3 sendstritBroadcast 方法是发送粘性广播,直到广播接收者完成了对广播事件的处理;
3 service服务组件;
3.1 service是四大组件之一
3.2 service的应用
service可以理解为没有界面的activity长期运行在后台的应用;
3.2.1 开启服务监听用户的通话记录;
服务注册开机启动:
Intent service = new Intent(context, SystemService.class);
context.startService(service);
<receiver android:name=".BootRecevier" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
3.2.2 实现对TelephoneMananger的状态的监听;
3.2.3 对通话记录的服务器上传;
3.2 服务的两种开启方式
3.2.1 通过oncreate的方法;
通过这种方式创建的服务,调用者被销毁掉了服务不随之而销毁,
3.2.2 通过onBind的方式
通过这种方式创建的服务是与调用者关联的,调用者挂了服务也随之而销毁
4 aidl与进程间的通信;


1.notification:
1.1 notification 的使用:
1.1.1 得到notification的管理类
notificationManager nm = (notificationManager) getSystemService(NOTIFICATION_SERVICE);
1.1.2 初始化一个notification的对象 ,让notificationmanager显示
Notification nf = new Notification(指定图标:R.drawable.notification,指定内容:"我是notification",显示时间:System.currentTimeMillens);
1.1.2 设置notification的具体的参数
notification.flags = Notification.FLAG_AUTO_CANCEL; //标示当前的notification不会被清除掉
    // notification.sound 指定notification的声音
    // notification.vibrate long[]{200,100,200}
    notification.icon = R.drawable.notification;
    Intent intent = new Intent(this,DemoActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(this, "我是正文的标题", "我是具体的内容", contentIntent);
1.1.4 利用管理者将notification显示
nm.notify(notification);
方式er:
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
    contentView.setTextViewText(R.id.title, "Custom notification");
    //contentView.setTextViewText(R.id.text, "This is a custom layout");
    contentView.setProgressBar(R.id.pb, 100, 30, true);
    notification.contentView = contentView;
    Intent notificationIntent = new Intent(this, DemoActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.contentIntent = contentIntent;
nm.notify(notification);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值