美文网首页
前台服务service的基础例子

前台服务service的基础例子

作者: 颤抖的闪电 | 来源:发表于2017-10-23 15:27 被阅读0次

    前言:其实就是多了官方给我们提供的两个方法,分别是startForeground()和stopForeground(),其他的都和Service服务的基本用法一样一样的。

    一、创建前台服务,然后在manifest.xml进行注册;

    /**
     * Created by zejian
     * Time 2016/10/4.
     * Description:启动前台服务Demo
     */
    public class ForegroundService extends Service {
    
        /**
         * id不可设置为0,否则不能设置为前台service
         */
        private static final int NOTIFICATION_DOWNLOAD_PROGRESS_ID = 0x0001;
    
        private boolean isRemove=false;//是否需要移除
    
        /**
         * Notification
         */
        public void createNotification(){
            //使用兼容版本
            NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
            //设置状态栏的通知图标
            builder.setSmallIcon(R.mipmap.ic_launcher);
            //设置通知栏横条的图标
            builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.screenflash_logo));
            //禁止用户点击删除按钮删除
            builder.setAutoCancel(false);
            //禁止滑动删除
            builder.setOngoing(true);
            //右上角的时间显示
            builder.setShowWhen(true);
            //设置通知栏的标题内容
            builder.setContentTitle("I am Foreground Service!!!");
            //创建通知
            Notification notification = builder.build();
            //设置为前台服务
            startForeground(NOTIFICATION_DOWNLOAD_PROGRESS_ID,notification);
        }
    
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            int i=intent.getExtras().getInt("cmd");
            if(i==0){
                if(!isRemove) {
                    createNotification();
                }
                isRemove=true;
            }else {
                //移除前台服务
                if (isRemove) {
                    stopForeground(true);
                }
                isRemove=false;
            }
    
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onDestroy() {
            //移除前台服务
            if (isRemove) {
                stopForeground(true);
            }
            isRemove=false;
            super.onDestroy();
        }
    
        @Nullable
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    }
    

    二、在Activity中进行启动。

    /**
     * Created by zejian
     * Time 2016/10/4.
     * Description:
     */
    public class ForegroundActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_foreground);
            Button btnStart= (Button) findViewById(R.id.startForeground);
            Button btnStop= (Button) findViewById(R.id.stopForeground);
            final Intent intent = new Intent(this,ForegroundService.class);
    
    
            btnStart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    intent.putExtra("cmd",0);//0,开启前台服务,1,关闭前台服务
                    startService(intent);
                }
            });
    
    
            btnStop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    intent.putExtra("cmd",1);//0,开启前台服务,1,关闭前台服务
                    startService(intent);
                }
            });
        }
    }
    

    感谢:
    http://blog.csdn.net/javazejian/article/details/52709857

    相关文章

      网友评论

          本文标题:前台服务service的基础例子

          本文链接:https://www.haomeiwen.com/subject/fmdauxtx.html