Android中服务的使用方法service和使用广播更新ui界面

服务说明

android中的服务有两种一种是服务启动后就跟启动者没有关系啦,启动者关闭服务并没有影响,还有一个是跟启动者绑定的启动者关闭后这个服务也就停止啦。

使用方法

Android中,service的开启,默认是绑定activity的,是activity级的。如果要实现当退出程序后,保持Service的运行,那么需要把service设置成为system级的,首先声明权限

复制代码

<service
    android:name="com.androidnodesocket.PushNotificationService"
    android:enabled="true"
    android:process="system"
    />

然后定义一个推送消息的服务类

复制代码

package com.androidnodesocket;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
/**
 * Created by Administrator on 2017-10-14.
 */
public class PushNotificationService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

最后在启动的activity中启动服务

复制代码

//启动服务
Intent i = new Intent(this,  PushNotificationService .class);
//下面写自己的路径
i.setAction("com.androidnodesocket.PushNotificationService");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startService(i);

在服务中更新ui界面

首先在mainActivity中定义一个内部广播的类(广播接收器)用来接收到数据后更新到  textViewJishu  这个TextView的文本中

复制代码

/**
 * 定义广播接收器(内部类)
 *
 * @author lenovo
 *
 */
private class UpdateUIBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        textView.setText(String.valueOf(intent.getExtras().getInt("count")));
    }
}

在MainActivity中声明两个变量并且在初始化的时候注册这个接收器的实例(下面是部分代码,请放到对应的位置)

复制代码

//声明一个操作常量字符串
public static final String ACTION_UPDATEUI = "action.updateUI";
//声明一个广播实例
public UpdateUIBroadcastReceiver broadcastReceiver;
//在初始化的时候注册实例
// 动态注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_UPDATEUI);
broadcastReceiver = new UpdateUIBroadcastReceiver();
registerReceiver(broadcastReceiver, filter);

在推送消息的服务类中发送广播消息给界面

复制代码

package com.androidnodesocket;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import java.util.Timer;
import java.util.TimerTask;
/**
 * Created by Administrator on 2017-10-14.
 */
public class PushNotificationService extends Service {
    private Timer timer;
    private TimerTask task;
    private int count;
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
    @Override
    public void onCreate() {
        super.onCreate();
        final Intent intent = new Intent();
        intent.setAction(MainActivity.ACTION_UPDATEUI);
        timer = new Timer();
        task = new TimerTask() {
            @Override
            public void run() {
                intent.putExtra("count", ++count);
                sendBroadcast(intent);
            }
        };
        timer.schedule(task, 1000, 1000);
    }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

 

原文链接:

https://www.zhaokeli.com/article/8244.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ServiceAndroid四大组件之一,用于在后台运行长时间运行的任务,而不需要与用户界面交互。Service可以在后台执行一些耗时的操作,比如下载文件、播放音乐等等。Service有两种类型:Started Service和Bound Service。 1. Started Service Started Service是一种启动方式,它是通过startService()方法来启动Service的。启动后,Service将会一直运行,直到通过stopService()方法停止。Started Service可以执行一些异步操作,比如下载文件、上传数据等等。当异步操作完成时,Service可以通过广播或者回调函数通知Activity更新UI。 2. Bound Service Bound Service是一种绑定方式,它是通过bindService()方法来绑定Service的。Bound Service的生命周期与绑定的Activity或者Service相关联,当Activity或者Service被销毁时,Bound Service也会被销毁。Bound Service可以提供一些接口供Activity或者Service调用,比如音乐播放器的play、pause、stop等等。当然,Bound Service也可以执行一些异步操作,比如下载文件、上传数据等等。当异步操作完成时,Service可以通过广播或者回调函数通知Activity更新UI。 在使用Service的时候,需要在AndroidManifest.xml文件声明Service,并在代码启动或者绑定Service。同时,需要实现Service的onCreate()、onStartCommand()、onBind()、onUnbind()、onDestroy()等方法。具体使用方法可以参考官方文档或者相关书籍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值