通過(guò)Stage模型開(kāi)發(fā)Android端應(yīng)用指南
簡(jiǎn)介
本文介紹將ArkUI框架擴(kuò)展到Android平臺(tái)所需要的必要的類及其使用說(shuō)明,開(kāi)發(fā)者基于OpenHarmony,可復(fù)用大部分的應(yīng)用代碼(生命周期等)并可以部署到Android平臺(tái),降低跨平臺(tái)應(yīng)用開(kāi)發(fā)成本。
AndroidStudio配置
使用AndroidStudio所創(chuàng)建Android工程的PackageName需要與OpenHarmony工程的BundleName一致。
注: AndroidStudio:Android應(yīng)用的開(kāi)發(fā)工具。
ArkUI-X和Android平臺(tái)集成所用關(guān)鍵類
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
應(yīng)用工程Android邏輯部分的StageApplication
應(yīng)用需要繼承arkui_android_adapter.jar包所提供的StageApplication。StageApplication用于初始化資源路徑以及加載配置信息,例如:
package com.example.myapplication;
import ohos.stage.ability.adapter.StageApplication;
public class HiStageApplication extends StageApplication {
}
應(yīng)用工程Android邏輯部分的StageActivity
Activity需要繼承arkui_android_adapter.jar包所提供的StageActivity,StageActivity主要功能是將Android中Activity的生命周期與OpenHarmony中Ability的生命周期進(jìn)行映射,例如:
package com.example.myapplication;
import ohos.stage.ability.adapter.StageActivity;
public class EntryMainAbilityActivity extends StageActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.setInstanceName("com.example.myapplication:entry:MainAbility:");
super.onCreate(savedInstanceState);
}
}
為了將Activity和ability進(jìn)行關(guān)聯(lián),需要重寫StageActivity中的onCreate事件,在super.onCreate(savedInstanceState)之前設(shè)置instanceName,規(guī)則如下:
bundleName:moduleName:abilityName:
其中bundleName的值來(lái)自于OpenHarmony應(yīng)用中app.json5配置文件,moduleName、abilityName的值來(lái)自于OpenHarmony應(yīng)用中的module.json5配置文件。
Ability與Activity對(duì)應(yīng)規(guī)則
Android端應(yīng)用內(nèi)的Activity的packageName需要與Ability的bundleName一致。
Android端應(yīng)用內(nèi)的Activity的activityName組成規(guī)則:Ability的moduleName + Ability的abilityName + “Activity”。
示例如圖:
StageApplication初始化支持以下三種方式
通過(guò)繼承StageApplication的方式進(jìn)行初始化
import ohos.stage.ability.adapter.StageApplication;
public class HiStageApplication extends StageApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
繼承Android原生Application方式,在onCreate方法中創(chuàng)建StageApplicationDelegate實(shí)例進(jìn)行初始化
import android.app.Application;
import ohos.stage.ability.adapter.StageApplicationDelegate;
public class HiStageApplication extends Application {
private StageApplicationDelegate appDelegate_ = null;
@Override
public void onCreate() {
super.onCreate();
appDelegate_ = new StageApplicationDelegate();
appDelegate_.initApplication(this);
}
}
在Activity中創(chuàng)建StageApplicationDelegate實(shí)例進(jìn)行初始化
import android.app.Activity;
import ohos.stage.ability.adapter.StageApplicationDelegate;
public class EntryEntryAbilityActivity extends Activity {
private StageApplicationDelegate appDelegate_ = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
appDelegate_ = new StageApplicationDelegate();
appDelegate_.initApplication(this.getApplication());
super.onCreate(savedInstanceState);
}
}
通過(guò)原生Activity拉起Ability并傳遞參數(shù)
使用原生Activity拉起Ability時(shí),需使用原生應(yīng)用的startActivity方法,參數(shù)的傳遞需要通過(guò)Intent中的putExtra()進(jìn)行設(shè)置,規(guī)則如下:
key值為params
value為json格式
{
"params":[
{
"key":鍵,
"type":參數(shù)類型值,
"value":值
},
{
...
}
]
}
支持的參數(shù)類型列表
參數(shù)類型HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | 參數(shù)類型值 |
---|---|
boolean | 1 |
int | 5 |
double | 9 |
string | 10 |
示例代碼
public class EntryEntryAbilityActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent();
intent.setClass(this, EntryEntryAbilityTwoActivity.class);
intent.putExtra("params",
"{"params":[{"key":"bool","type":1,"value":"true"}," +
"{"key":"double","type":9,"value":"2.3"}," +
"{"key":"int","type":5,"value":"2"}," +
"{"key":"string","type":10,"value":"test"}]}");
startActivity(intent);
}
}
審核編輯 黃宇
-
Android
+關(guān)注
關(guān)注
12文章
3945瀏覽量
127930 -
模型
+關(guān)注
關(guān)注
1文章
3305瀏覽量
49221 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2392瀏覽量
43050 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3744瀏覽量
16578
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
跨Android、iOS、鴻蒙多平臺(tái)框架ArkUI-X
![<b class='flag-5'>跨</b><b class='flag-5'>Android</b>、iOS、<b class='flag-5'>鴻蒙</b>多<b class='flag-5'>平臺(tái)</b>框架<b class='flag-5'>ArkUI-X</b>](https://file1.elecfans.com/web2/M00/BF/13/wKgZomW57faAOjuhAADmC_RvzVs622.png)
鴻蒙開(kāi)發(fā)學(xué)習(xí):初探【ArkUI-X】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>學(xué)習(xí):初探【<b class='flag-5'>ArkUI-X</b>】](https://file1.elecfans.com/web2/M00/E5/A1/wKgaomZAx9qAGXG3AAITN8SHpJk887.jpg)
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【命令行工具(ACE Tools)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開(kāi)發(fā)</b>:【命令行工具(ACE Tools)】](https://file1.elecfans.com/web2/M00/E7/65/wKgaomZHTraAVXmkAABqDt1o7NY191.jpg)
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【SDK目錄結(jié)構(gòu)介紹】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開(kāi)發(fā)</b>:【SDK目錄結(jié)構(gòu)介紹】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【bility開(kāi)發(fā)說(shuō)明(iOS端)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>bility</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>說(shuō)明</b>(iOS端)】](https://file1.elecfans.com/web2/M00/E7/55/wKgZomZLWeOAJDUvAACwY_167KI488.jpg)
鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:【平臺(tái)橋接開(kāi)發(fā)指南(Android)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b>語(yǔ)言調(diào)用<b class='flag-5'>說(shuō)明</b>:【<b class='flag-5'>平臺(tái)</b>橋接<b class='flag-5'>開(kāi)發(fā)</b>指南(<b class='flag-5'>Android</b>)】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙開(kāi)發(fā)ArkUI-X基礎(chǔ)知識(shí):【ArkUI跨平臺(tái)設(shè)計(jì)總體說(shuō)明】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>ArkUI-X</b>基礎(chǔ)知識(shí):【<b class='flag-5'>ArkUI</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>設(shè)計(jì)總體<b class='flag-5'>說(shuō)明</b>】](https://file1.elecfans.com/web2/M00/E5/FC/wKgZomZFvuqAaa9zAACamI3wixM971.jpg)
ArkUI-X開(kāi)發(fā)指南:【SDK配置和構(gòu)建說(shuō)明】
![<b class='flag-5'>ArkUI-X</b><b class='flag-5'>開(kāi)發(fā)</b>指南:【SDK配置和構(gòu)建<b class='flag-5'>說(shuō)明</b>】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
資訊速遞 | ArkUI-X 預(yù)覽版已正式開(kāi)源!
鴻蒙ArkUI-X跨平臺(tái)技術(shù):【開(kāi)發(fā)準(zhǔn)備】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>技術(shù):【<b class='flag-5'>開(kāi)發(fā)</b>準(zhǔn)備】](https://file1.elecfans.com/web2/M00/E6/FF/wKgaomZF_t6AQdF0AAOgQ8sKRgk267.jpg)
鴻蒙ArkUI-X跨平臺(tái)技術(shù):【開(kāi)發(fā)初體驗(yàn)】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>技術(shù):【<b class='flag-5'>開(kāi)發(fā)</b>初體驗(yàn)】](https://file1.elecfans.com/web2/M00/E6/6C/wKgZomZHDKuAJaZHAADwWP36UOQ467.jpg)
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【 應(yīng)用工程結(jié)構(gòu)說(shuō)明】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開(kāi)發(fā)</b>:【 應(yīng)用工程結(jié)構(gòu)<b class='flag-5'>說(shuō)明</b>】](https://file1.elecfans.com/web2/M00/C6/C5/wKgaomYCyYKAZp6HAAB4LWPdpdQ014.jpg)
鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:平臺(tái)差異化【Android、ios動(dòng)態(tài)化】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b>語(yǔ)言調(diào)用<b class='flag-5'>說(shuō)明</b>:<b class='flag-5'>平臺(tái)</b>差異化【<b class='flag-5'>Android</b>、ios動(dòng)態(tài)化】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙ArkUI-X框架開(kāi)發(fā):【開(kāi)發(fā)準(zhǔn)備】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b>框架<b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>開(kāi)發(fā)</b>準(zhǔn)備】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
評(píng)論