【Android】通知栏请求策略

35 篇文章 0 订阅
18 篇文章 0 订阅

场景描述:

      话说,在程序开发交付测试之后,客户有时会抱怨:“后台明明有新的推送消息,但等了好久都没有看到通知栏有消息通知,是不是程序有问题?”

      面对这样的问题,除了检查代码,还能如何呢?

问题剖析:

       由于Android客户端采用时间间隔请求拉取的方式,在实现过程中,都是以最理想的状态下实现的,而且没有将请求失败情况考虑在列。因而,在请求失败之后,程序会在预先设定的时间间隔之后才再次发起请求,而重新发起的请求也无法保证一定能够成功,所以就出现了后台有消息,而客户端没响应的情况出现。

 

      网络请求响应时间设置为3s,请求间隔时间段为3min。在理想状态下,每3min的请求都是成功的,所以如果后台有新的消息,在每次请求之后通过通知栏展示给用户。然而,一旦出现请求失败的情况,客户端将会在3min之后才会再发起请求。对于用户来说,这并非什么问题,但是对于测试的客户来说,这就是一个存在的缺陷。为此,应该在请求失败时,再加一些处理,以便能够及时请求到服务器消息。

解决策略实现:

       由于请求失败做任何处理,所以才引发此问题的存在。所以要从以下方面解决些问题:

      (1)判断请求是否失败;

      (2)根据请求状态处理。

      通过Service、Handle、Runnable结合处理定时拉取服务器消息。Service提供客户端后台运行保证;Runnable用于逻辑处理(如网络请求);Handle可以定时执行Runnable。

      假设:

     (1)请求状态为:requestStatus(true:成功,false:失败);

     (2)请求间隔时间为:DELAY_MILLIS;

     (3)网络请求逻辑函数为:SendRequest()。

     实现代码如下:

 

    private Handler handler;

    private Runnable runnable;

    private final long DELAY_MILLIS = 30000;

    private boolean requestStatus = true;

    @Override
    public void onCreate() {
        super.onCreate();
        handler = new Handler();
        runnable = new Runnable() {

            @Override
            public void run() {
                sendRequest();
                if (requestStatus) {
                    //请求返回成功时,延时执行
                    handler.postDelayed(runnable, DELAY_MILLIS);
                } else {
                    //请求返回失败时,即刻执行
                    handler.post(runnable);
                }
            }
        };
        handler.post(runnable);
    }

    private void sendRequest() {
        //模拟网络请求
        double num = Math.random();
        requestStatus = num > 0.5;
    }

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android通知源码是Android操作系统中负责显示和管理通知的代码。通知Android系统的一个核心功能,它允许应用程序在后台发送通知给用户,以提醒用户有新的消息、事件或提醒。 Android通知源码主要包括以下几个关键模块: 1. NotificationManager:通知管理器,负责发送和取消通知。通过调用NotificationManager的方法,应用程序可以发送不同类型的通知到系统通知。例如,可以发送文本通知、图像通知、宽展式通知等。同时,NotificationManager也负责取消通知,当用户点击通知或应用程序关闭时,就可以取消通知。 2. Notification:通知实体,负责定义通知的各种属性。通过构建Notification对象并设置各种属性,应用程序可以自定义通知的外观和行为,例如设置通知的标题、内容、图标、声音、振动等。同时,Notification也可以设置通知的点击行为,比如打开一个Activity或触发一个广播。 3. NotificationChannel:通知渠道,负责管理不同类型的通知。从Android 8.0开始,引入了通知渠道的概念,它允许应用程序为不同类型的通知指定不同的设置。比如,应用程序可以为消息通知推送通知分别创建不同的通知渠道,并为它们设置不同的优先级、声音、振动等属性。 Android通知源码的实现原理是通过发送Notification对象到系统通知,系统会根据Notification的属性来展示通知通知源码提供了丰富的API和方法,开发者可以根据自己的需求来定制通知的外观和行为。 通过使用Android通知源码,开发者可以实现各种通知功能,如展示新消息、显示推送通知、提醒用户事件等。利用通知,可以提高应用与用户之间的交互和通信效率,提升用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值