aplt2.hpp有提供各种任务接口,像tblock_api、tnonblock_api,如果由小程序直接实现这些接口,还是有点让复杂,引入thelper_<type>_api、thelper_lua_<type>、t<type>_task_slot。它们和起来要实现两个目标。
- 简化小程序任务方面编程。
- 负责执行任务对象可能还须要提供lua代码访问,要兼顾这部分。

注1。如果该任务须要向外提供lua代码访问,那此任务须一直存在,即so加载时创建,so卸载时销毁。否则,可以在此任务要后台运行时创建,结束后就销毁。要一直存在时,任务对象建议放在thelper_lua_<type>,并提供两种状态下的同一函数访问。
class tlua_block: public thelper_lua_block
{
...
text_lamp_task& ext_lamp()
{
if (ext_lamp_ == nullptr) {
ext_lamp_ = new text_lamp_task(aplt_);
}
return *ext_lamp_;
}
text_lamp_task* ext_lamp_;
};在lua调用c接口代码,用lua_block->ext_lamp()得到tex_lamp_task这个任务对象。
tblock_task_slot* tnlsd_block_api::app_create_block_task_slot(int task_code, bool& help_api_delete)
{
help_api_delete = false;
tblock_task_slot* slot = nullptr;
if (task_code == block_turn_off) {
slot = &lua_block->ext_lamp();
} else {
VALIDATE(false, null_str);
}
return slot;
}在此任务要后台执行时,也由lua_block->ext_lamp()得到这个text_lamp_task对象。并把help_api_delete设为false,告知help层,这个slot对象由小程序自个创建,help层不要去销毁它。
存在哪文件
方便阅读小程序代码,对小程序在哪文件实现哪部分,也做了建议。
派生于thelper_<type>的对象建议放在tkhome_block_api.cpp、tkhome_camera_api.cpp。“khome”是自个小程序标识,可以是产家、产品。“block”、“camera”是任务类型。
派生于thelper_lua_<type>的对象,建议放在block_task.cpp、tcamera_api.cpp。“block”、“camera”是任务类型。没有谁在定义像tblock_
派生于t<type>_task_slot的对象,如果该任务代码较少,建议和thelper_lua_<type>一样,放在block_task.cpp、tcamera_api.cpp。如果代码较多,单独一个cpp文件,像kpose.cpp。