android87 Service

简介:

#Service(服务和Activity是运行在进程中的,一个进程可以有多个服务,)

* 就是默默运行在后台的组件,可以理解为是没有前台的activity,适合用来运行不需要前台界面的代码(例如下载就是在后台进行的,activity里面也可以开启一个线程来下载,即使返回到主页面线程也会继续下载,但是Activity到后台后就是一个后台进程很容器被杀掉,Activity被杀掉了那么这个子线程也就杀掉了,所以不能在Activity里面做下载而是用Service做下载,服务进程很难被杀死,即使杀死了也会重启。) * 服务可以被手动关闭,不会重启,但是如果被自动关闭,内存充足就会重启 * startService启动服务的生命周期 * onCreate-onStartCommand-onDestroy只有这3个, * 重复的调用startService会导致onStartCommand被重复调用 ---------------------------------------------------------------------------- # 进程优先级 1. 前台进程:拥有前台的正在与用户交互的Activity(onResume方法被调用) 2. 可见进程:拥有可见但是没有焦点的Activity(onPause方法被调用,被遮挡或者部分遮挡) 3. 服务进程:Service,通过startService方法启动的服务,不到万不得已不会被回收,而且即便被回收,内存充足时也会被重启,如果是手动杀死或者代码杀死就不会重启。 4. 后台进程:不可见的后台的activity(activity的onStop方法被调用了),很容易被回收 5. 空进程:没有拥有任何活动的应用组件Activity的进程,没有运行任何activity,很容易被回收
复制代码
复制代码
package com.itheima.startservice;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    private Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intent = new Intent(this, MyService.class);
    }


    public void click(View v){
        //显式启动服务
        startService(intent);
    }
    public void click2(View v){
        //关闭服务
//        Intent intent = new Intent(this, MyService.class);
        stopService(intent);
    }
    
}

//清单文件:显示启动服务
//<service android:name="com.itheima.startservice.MyService"></service>
复制代码
复制代码
package com.itheima.startservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        System.out.println("create方法");
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        System.out.println("startCommand方法");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        System.out.println("destroy方法");
    }

    
}
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4948775.html,如需转载请自行联系原作者


相关文章
|
Android开发
Android 11 添加Service服务SELinux问题
Android 11 添加Service服务SELinux问题
736 1
|
Android开发
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
246 0
|
XML Java Android开发
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
1485 0
|
调度 Android开发
43. 【Android教程】服务:Service
43. 【Android教程】服务:Service
128 2
|
Android开发
Android Service Call /dev/xxx SELinux
Android Service Call /dev/xxx SELinux
283 1
|
编解码 网络协议 Android开发
Android平台GB28181设备接入模块实现后台service按需回传摄像头数据到国标平台侧
我们在做Android平台GB28181设备对接模块的时候,遇到这样的技术需求,开发者希望能以后台服务的形式运行程序,国标平台侧没有视频回传请求的时候,仅保持信令链接,有发起视频回传请求或语音广播时,打开摄像头,并实时回传音视频数据或接收处理国标平台侧发过来的语音广播数据。
123 3
|
存储 监控 Java
Android Service之设备存储空间监控 DeviceStorageMonitorService
Android Service之设备存储空间监控 DeviceStorageMonitorService
265 2
|
Android开发 数据库管理
Android如何在Activity和Service之间传递数据
Android如何在Activity和Service之间传递数据
434 3
|
Android开发
Android Service的两种使用方法
Android Service的两种使用方法
122 2
|
Android开发 Kotlin
android开发,使用kotlin学习Service
android开发,使用kotlin学习Service
258 1