通過Stage模型開發(fā)Android端應用指南
簡介
本文介紹將ArkUI框架擴展到Android平臺所需要的必要的類及其使用說明,開發(fā)者基于OpenHarmony,可復用大部分的應用代碼(生命周期等)并可以部署到Android平臺,降低跨平臺應用開發(fā)成本。
AndroidStudio配置
使用AndroidStudio所創(chuàng)建Android工程的PackageName需要與OpenHarmony工程的BundleName一致。
注: AndroidStudio:Android應用的開發(fā)工具。
ArkUI-X和Android平臺集成所用關鍵類
開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
應用工程Android邏輯部分的StageApplication
應用需要繼承arkui_android_adapter.jar包所提供的StageApplication。StageApplication用于初始化資源路徑以及加載配置信息,例如:
package com.example.myapplication;
import ohos.stage.ability.adapter.StageApplication;
public class HiStageApplication extends StageApplication {
}
應用工程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進行關聯(lián),需要重寫StageActivity中的onCreate事件,在super.onCreate(savedInstanceState)之前設置instanceName,規(guī)則如下:
bundleName:moduleName:abilityName:
其中bundleName的值來自于OpenHarmony應用中app.json5配置文件,moduleName、abilityName的值來自于OpenHarmony應用中的module.json5配置文件。
Ability與Activity對應規(guī)則
Android端應用內(nèi)的Activity的packageName需要與Ability的bundleName一致。
Android端應用內(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時,需使用原生應用的startActivity方法,參數(shù)的傳遞需要通過Intent中的putExtra()進行設置,規(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
+關注
關注
12文章
3945瀏覽量
127934 -
模型
+關注
關注
1文章
3307瀏覽量
49223 -
鴻蒙
+關注
關注
57文章
2392瀏覽量
43051 -
OpenHarmony
+關注
關注
25文章
3745瀏覽量
16581
發(fā)布評論請先 登錄
相關推薦
評論