通過(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)推薦
評(píng)論