星空网 > 软件开发 > 操作系统

android Services注意地方

使用service前需要在manifest声明:

<manifest ... > ... <application ... >   <service android:name=".ExampleService" />   ... </application></manifest>

  

 

services有两种类型:

Started (一直运行)

Bound (绑定)

PS:一个service可以是两种类型复合

 

Started:

1.扩展IntentService:

  • 构造函数(必须用工作线程名称作为参数)
  • 重写onHandleIntent

2.扩展service类:

方法较为多样和复杂,下面先贴一段官网的例子:

public class HelloService extends Service { private Looper mServiceLooper; private ServiceHandler mServiceHandler; // 处理从线程接收的消息 private final class ServiceHandler extends Handler {   public ServiceHandler(Looper looper) {     super(looper);   }   @Override   public void handleMessage(Message msg) {     // 通常我们在这里执行一些工作,比如下载文件。     // 作为例子,我们只是睡个5秒钟。     long endTime = System.currentTimeMillis() + 5*1000;     while (System.currentTimeMillis() < endTime) {       synchronized (this) {         try {           wait(endTime - System.currentTimeMillis());         } catch (Exception e) {         }       }     }     // 根据startId终止服务,这样我们就不会在处理其它工作的过程中再来终止服务     stopSelf(msg.arg1);   } } @Override public void onCreate() {  // 启动运行服务的线程。  // 请记住我们要创建一个单独的线程,因为服务通常运行于进程的主线程中,可我们不想阻塞主线程。  // 我们还要赋予它后台运行的优先级,以便计算密集的工作不会干扰我们的UI。  HandlerThread thread = new HandlerThread("ServiceStartArguments",      Process.THREAD_PRIORITY_BACKGROUND);  thread.start();    // 获得HandlerThread的Looper队列并用于Handler  mServiceLooper = thread.getLooper();  mServiceHandler = new ServiceHandler(mServiceLooper); } @Override public int onStartCommand(Intent intent, int flags, int startId) {   Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();   // 对于每一个启动请求,都发送一个消息来启动一个处理   // 同时传入启动ID,以便任务完成后我们知道该终止哪一个请求。   Message msg = mServiceHandler.obtainMessage();   msg.arg1 = startId;   mServiceHandler.sendMessage(msg);      // 如果我们被杀死了,那从这里返回之后被重启   return START_STICKY; } @Override public IBinder onBind(Intent intent) {   // 我们不支持绑定,所以返回null   return null; }  @Override public void onDestroy() {  Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();  }}

  

 




原标题:android Services注意地方

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

如何实现shopee的精准吸粉?速速来看!:https://www.goluckyvip.com/news/3312.html
阿里巴巴九月采购节运费模板设置:https://www.goluckyvip.com/news/3313.html
Shopee开店,如何选择合适的产品类目?:https://www.goluckyvip.com/news/3314.html
亚马逊跨境物流中美包机增至一周三班:https://www.goluckyvip.com/news/3315.html
亚马逊8月15日将征收长期仓储费:https://www.goluckyvip.com/news/3316.html
警告!Shopee将对不活跃店铺进行清查,不排除永久关店:https://www.goluckyvip.com/news/3317.html
从园岭新村到大梅沙海滨总站坐什么车:https://www.vstour.cn/a/363191.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流