通過Stage模型開發(fā)Android端應(yīng)用指南
簡介
本文介紹將ArkUI框架擴展到Android平臺所需要的必要的類及其使用說明,開發(fā)者基于OpenHarmony,可復(fù)用大部分的應(yīng)用代碼(生命周期等)并可以部署到Android平臺,降低跨平臺應(yīng)用開發(fā)成本。
AndroidStudio配置
使用AndroidStudio所創(chuàng)建Android工程的PackageName需要與OpenHarmony工程的BundleName一致。
注: AndroidStudio:Android應(yīng)用的開發(fā)工具。
ArkUI-X和Android平臺集成所用關(guān)鍵類
開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[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的生命周期進行映射,例如:
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進行關(guān)聯(lián),需要重寫StageActivity中的onCreate事件,在super.onCreate(savedInstanceState)之前設(shè)置instanceName,規(guī)則如下:
bundleName:moduleName:abilityName:
其中bundleName的值來自于OpenHarmony應(yīng)用中app.json5配置文件,moduleName、abilityName的值來自于OpenHarmony應(yīng)用中的module.json5配置文件。
Ability與Activity對應(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初始化支持以下三種方式
通過繼承StageApplication的方式進行初始化
import ohos.stage.ability.adapter.StageApplication;
public class HiStageApplication extends StageApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
繼承Android原生Application方式,在onCreate方法中創(chuàng)建StageApplicationDelegate實例進行初始化
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實例進行初始化
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);
}
}
通過原生Activity拉起Ability并傳遞參數(shù)
使用原生Activity拉起Ability時,需使用原生應(yīng)用的startActivity方法,參數(shù)的傳遞需要通過Intent中的putExtra()進行設(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文章
3968瀏覽量
129757 -
模型
+關(guān)注
關(guān)注
1文章
3500瀏覽量
50127 -
鴻蒙
+關(guān)注
關(guān)注
59文章
2543瀏覽量
43840 -
OpenHarmony
+關(guān)注
關(guān)注
28文章
3840瀏覽量
18260
發(fā)布評論請先 登錄
鴻蒙ArkUI-X跨平臺開發(fā):【命令行工具(ACE Tools)】

鴻蒙ArkUI-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】

鴻蒙ArkUI-X跨平臺開發(fā):【bility開發(fā)說明(iOS端)】

ArkUI-X開發(fā)指南:【SDK配置和構(gòu)建說明】

ArkUI-X在Android平臺動態(tài)化開發(fā)指南
ArkUI-X跨平臺應(yīng)用改造指南
ArkUI-X跨平臺技術(shù)落地-華為運動健康(一)
ArkUI-X應(yīng)用工程結(jié)構(gòu)說明
資訊速遞 | ArkUI-X 預(yù)覽版已正式開源!
鴻蒙ArkUI-X跨平臺技術(shù):【開發(fā)準備】

鴻蒙ArkUI-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】

鴻蒙ArkUI-X跨語言調(diào)用說明:平臺差異化【Android、ios動態(tài)化】

評論