通過(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),需要重寫(xiě)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文章
4024瀏覽量
133978 -
模型
+關(guān)注
關(guān)注
1文章
3751瀏覽量
52099 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2963瀏覽量
45883 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3952瀏覽量
21096
發(fā)布評(píng)論請(qǐng)先 登錄
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【命令行工具(ACE Tools)】
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【SDK目錄結(jié)構(gòu)介紹】
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【bility開(kāi)發(fā)說(shuō)明(iOS端)】
鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:【平臺(tái)橋接開(kāi)發(fā)指南(Android)】
ArkUI-X開(kāi)發(fā)指南:【SDK配置和構(gòu)建說(shuō)明】
ArkUI-X跨平臺(tái)框架接入指南
ArkUI-X在Android平臺(tái)動(dòng)態(tài)化開(kāi)發(fā)指南
ArkUI-X跨平臺(tái)應(yīng)用改造指南
ArkUI-X跨平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(一)
ArkUI-X應(yīng)用工程結(jié)構(gòu)說(shuō)明
資訊速遞 | ArkUI-X 預(yù)覽版已正式開(kāi)源!
鴻蒙ArkUI-X跨平臺(tái)技術(shù):【開(kāi)發(fā)準(zhǔn)備】
鴻蒙ArkUI-X跨平臺(tái)技術(shù):【開(kāi)發(fā)初體驗(yàn)】
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【 應(yīng)用工程結(jié)構(gòu)說(shuō)明】
鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:平臺(tái)差異化【Android、ios動(dòng)態(tài)化】
鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【bility開(kāi)發(fā)說(shuō)明(Android平臺(tái))】
評(píng)論