Framework中新增Java service

本文详细介绍了如何在Android系统中创建并实现一个自定义的系统服务。从创建接口到服务注册,再到系统服务的启动过程,提供了完整的步骤指导。特别关注了如何避免编译时可能出现的错误。

1、  新建ITouchShService.aidl

(frameworks\base\core\java\android\os)

 

2、  新建TouchShService.java

(frameworks\base\services\core\java\com\android\server)

public class TouchShService extends ITouchShService.Stub

 

3、  新建TouchShManager.java

(frameworks\base\core\java\android\os)

    /**

     * get singleton

     *@hide

     */

    public static TouchShManager getInstance() {

        if (mInstance == null) {

            mInstance = new TouchShManager();

        }

        return mInstance;

    }

 

    public TouchShManager() {

        IBinder b = ServiceManager.getService(Context.TOUCHSH_SERVICE);

        if (b != null) {

            mService = ITouchShService.Stub.asInterface(b);

            Log.d(TAG, "TouchShManager: init mService");

        }

    }

 

4、  在Context.java中给新建的service写别名,方便引用

    /* BEGIN: Added by test, 2016/8/26 */

    /**

     *sharpnow touch service

     *@hide

     */

    public static final String TOUCHSH_SERVICE = "touchsh";

5、  SystemServiceRegistry.java中在static中注册service

        /* BEGIN: Added by test, 2016/8/26  add TouchSHservice */

        registerService(Context.TOUCHSH_SERVICE, TouchShManager.class,

                new CachedServiceFetcher<TouchShManager>() {

                    @Override

                    public TouchShManager createService(ContextImpl ctx) {

                        Log.d(TAG,"register TouchShManager success !");

                        return TouchShManager.getInstance();

                    }});

 

6、  在SystemServer.java中的 startOtherServices() 函数中将新建的servie添加到servicemanager中

        /* BEGIN: Added by test, 2016/8/26   add touchShService to service manager*/

        try {

            Slog.i(TAG, "touchShService");

            touchShService = new touchShService(mSystemContext);

            ServiceManager.addService(Context.TOUCHSH_SERVICE, touchShService);

        } catch (RuntimeException e) {

            Slog.e(TAG, "Starting touchShService exception ", e);

        }

 

7、  编译烧录验证

 

 

 

编译报错

a)      checkpublicapi-current-timestamp,make update-api

b)      给新增的类和函数添加@hide防止java doc生成时报错

 

Java后端项目中,实现人员新增功能通常涉及以下几个步骤: 1. **模型层(Model)**: 创建一个`Person`实体,包含属性如id、姓名(name)、职位(position)等,并可能有对应的getter和setter方法。 ```java public class Person { private Long id; private String name; private String position; // getters and setters } ``` 2. **服务层(Service)**: 创建`PersonService`,负责处理业务逻辑。添加人员的方法`addPerson`会接受一个`Person`对象作为参数,可能需要连接到数据库进行数据操作。 ```java import org.springframework.stereotype.Service; @Service public class PersonService { public void addPerson(Person person) { // 连接数据库 Dao dao = new Dao(); dao.insert(person); // 使用DAO层的insert方法保存数据 } } ``` 3. **DAO层(DAO - Data Access Object)**: `Dao`接口或实现如JPA或MyBatis中的`PersonMapper`,用于与数据库交互。`insert`方法接收`Person`对象并将其插入到对应表中。 ```java import org.springframework.jdbc.core.JdbcTemplate; // 或者使用JPA public interface PersonDao { @Insert("INSERT INTO persons (name, position) VALUES (?, ?)") void insert(Person person); } ``` 4. **控制器(Controller)**: 在Spring MVC或者Spring Boot的`RestController`中,创建一个HTTP端点处理POST请求,传递新人员信息到`PersonService`。 ```java @RestController @RequestMapping("/api/persons") public class PersonController { @Autowired private PersonService personService; @PostMapping public ResponseEntity<?> create(@RequestBody Person person) { personService.addPerson(person); return ResponseEntity.ok().build(); } } ``` 5. **异常处理**: 需要考虑各种异常情况,比如输入验证错误、数据库操作失败等,并提供适当的响应。 **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值