轮询接口进行消息提示

一、轮询服务启动

<span style="font-size:18px;">public class NewTaskService extends Service {

    public static final String ACTION = "com.dbjtech.myservice";
    private Notification notification;
    private Notification.Builder builder;
    private NotificationManager mManager;


    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        initNotifiManager();
    }

    @Override
    public void onStart(Intent intent, int startId) {
        new PollingThread().start();
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void initNotifiManager() {
        LogUtil.debug("service", "asdfas");
        mManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Intent i;

        boolean flag = SharedPreferencesUtil.getBoolean(NewTaskService.this, "isLogin", false);
        if (flag) {//已经登录
            i = new Intent(this, MainActivity.class);
        } else {
            i = new Intent(this, LoginActivity.class);
        }

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i,
                PendingIntent.FLAG_UPDATE_CURRENT);
        long[] vibrate = {0, 1000, 1000, 1000};//延迟0ms,然后振动1000ms,再延迟1000ms,接着在振动1000ms。
        Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
        builder = new Notification.Builder(this)  //创建消息提示框
                .setTicker("显示屏幕顶端的状态栏")
                .setSmallIcon(R.drawable.ic_launcher)
                .setAutoCancel(true)
                .setContentIntent(pendingIntent)
                .setContentTitle("移动仓储")
                .setContentText("你有一条新任务")
                .setSound(soundUri)
                .setVibrate(vibrate);
    }

    private void showNotif() {
        System.out.println("开启一次接口轮询信息~~~");//查看标识

        Map<String, Object> map = new HashMap<>();
        map.put("userTicket", SharedPreferencesUtil.getString(this, "userTicket", ""));
        System.out.println(SharedPreferencesUtil.getString(this, "userTicket", "") + "userTicket");
<span style="white-space:pre">	</span>//轮询接口【<span style="background-color: rgb(255, 255, 255);"><span style="color:#6600cc;"> 接口使用缓存控件和消息弹栈 </span></span>】
        NetWork.getJsonGetForXutil(Url.URL + "getTaskNotify.json?", map, new RequestCallBack<String>() {
            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                String request = responseInfo.result;
                try {
                    JSONObject jsonObject = new JSONObject(request);
                    if (jsonObject != null) {
                        boolean flag = jsonObject.getBoolean("success");
                        if (flag) {
                            notification = builder.build();
                            mManager.notify(0, notification);
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(HttpException e, String s) {
            }
        });
    }

    /**
     * Polling thread
     * 模拟向Server轮询的异步线程
     *
     * @Author Ryan
     * @Create 2013-7-13 上午10:18:34
     */
    int count = 0;

    class PollingThread extends Thread {
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void run() {
            count++;
            //5分钟时间间隔
            if (count % (5 * 60) == 0) {  //外围环境设置1秒一轮询
                showNotif();
            }
        }
    }
}</span>
二、调用

在合适的位置上使用

PollingUtils.startPollingService(this, 1, NewTaskService.class, NewTaskService.ACTION);
同时,因为是轮询服务,相对比较消耗资源,所以,在不必使用时,需要关闭服务。



人多不足以依赖,要生存只有靠自己。
      深窥自己的心,而后发觉一切的奇迹在你自己。
          凡事皆有终结,因此,耐心是赢得成功的一种手段。 

你可能感兴趣的:(notification,服务,消息提醒)