主頁 > 移動端開發 > 第01講 Android開發系列---Activity

第01講 Android開發系列---Activity

2020-09-16 02:06:19 移動端開發

一.  Android系統版本及詳細資訊

最新資料  https://developer.android.com/about/dashboards/

 

二.  Android專案初探

1.    使用android studio創建一個工程

Application Name:“My First App”

Company Domain:“example.com”

Project和module聯系和區別

一個 Project 可以有多個 Module,目前主流的大型專案是多Module結構的,模塊之間彼此可以相互依賴,他們之間應該都是處于同一個專案業務情況下的模塊,彼此之間是有不可分割的業務關系的,

Android studio中,一個Project代表一個完整的APP,Module表示APP中的一些依賴庫或獨立開發的模塊,比如可以新建一個library做為module,然后在主APP上點右鍵 open module setting的Dependencies中添加一個模塊依賴,然后主APP中就可以使用module中的類了,

2.    目錄結構

Android視圖  

Project視圖

 

關于gradle.build檔案參考: https://developer.android.google.cn/studio/build/index.html

3.    Logcat的使用

日志列印工具

方法

級別

Log.v()

verbose

Log.d()

debug

Log.i()

info

Log.w()

warn

Log.e()

error

 

     注意:在android studio中創建一個activity 為我們完成了三步:(繼承自AppCompatActivity是為了向后兼容)

創建activity、在menifest中注冊activity、創建activity對應的layout檔案

4.    隱藏標題欄

方法一:

繼承自AppCompatActivity:

if (getSupportActionBar() != null){
    getSupportActionBar().hide();
}

 

方法二: 在style中加入如下代碼:    <item name="windowNoTitle">true</item>

5.    在活動中使用Toast

Toast.makeText(this,"you clicked",Toast.LENGTH_SHORT).show();

6.    在活動中添加選單  

       (1)添加選單xml檔案:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item

    android:id="@+id/add_item"

    android:title="add"/>

<item

    android:id="@+id/delete_item"

    android:title="delete"/>

</menu>

(2)重寫onCreateOptionsMenu方法

public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main,menu);

        return true;  //回傳true表示顯示該選單

    }

(3)重寫onOptionsItemSelected

public boolean onOptionsItemSelected(MenuItem item){

        switch(item.getItemId()){

            case R.id.add_item:

                Toast.makeText(this,"add clicked",Toast.LENGTH_SHORT).show();

                break;

            case R.id.delete_item:

                Toast.makeText(this,"delete clicked",Toast.LENGTH_SHORT).show();

                break;

        }

        return true;

    }

更多詳情參見考:https://developer.android.google.cn/guide/topics/ui/menus

7.    銷毀活動

finish();   //第一講到此+java預備知識

三.  Android事件處理    

Android提供了兩套事件處理機制:監聽、回呼

1.    基于監聽的事件處理

事件監聽的處理模型中,主要涉及三類物件:

Event Source(事件源)  通常是各個組件,如按鈕、視窗、選單等;

Event(事件):事件封裝了界面組件上發生的特定事情,

Event Listener(事件監聽器):負責監聽事件源所發生的事件,并對各種事件作出相應的相應,

 

事件監聽涉及的三個問題:

事件源:     任何組件都可作為事件源,

事件監聽器:由程式員實作,關鍵是實作處理方法,

注冊監聽器:呼叫事件源的setXxxListener方法即可,

 

另外:對于鍵盤事件、觸摸屏事件等,此時程式需要獲取事件發生的詳細資訊,如,鍵盤事件獲取是哪個鍵觸發的,觸摸屏事件需要獲取事件發生的位置的,Android會將事件資訊封裝成XxxEvent物件,并將該物件作為引數傳遞給事件處理器,

 

所謂事件監聽器,其實就是實作了特定介面的java類的實體,實作事件監聽器,通常有如下幾種形式:

l  內部類

l  匿名內部類

l  外部類

l  Activity本身作為事件監聽器

l  直接系結到標簽

其他事件如下表所示:

void

setOnClickListener(View.OnClickListener l)

Register a callback to be invoked when this view is clicked.

void

setOnContextClickListener(View.OnContextClickListener l)

Register a callback to be invoked when this view is context clicked.

void

setOnCreateContextMenuListener(View.OnCreateContextMenuListener l)

Register a callback to be invoked when the context menu for this view is being built.

void

setOnDragListener(View.OnDragListener l)

Register a drag event listener callback object for this View.

void

setOnFocusChangeListener(View.OnFocusChangeListener l)

Register a callback to be invoked when focus of this view changed.

void

setOnGenericMotionListener(View.OnGenericMotionListener l)

Register a callback to be invoked when a generic motion event is sent to this view.

void

setOnHoverListener(View.OnHoverListener l)

Register a callback to be invoked when a hover event is sent to this view.

void

setOnKeyListener(View.OnKeyListener l)

Register a callback to be invoked when a hardware key is pressed in this view.

void

setOnLongClickListener(View.OnLongClickListener l)

Register a callback to be invoked when this view is clicked and held.

void

setOnScrollChangeListener(View.OnScrollChangeListener l)

Register a callback to be invoked when the scroll X or Y positions of this view change.

void

setOnTouchListener(View.OnTouchListener l)

Register a callback to be invoked when a touch event is sent to this view.

 

2.    基于回呼的事件處理  

當用戶在GUI組件上激發某事件時,組件自己的特定方法負責處理該事件,方法是自定義控制元件使其繼承GUI組件類,在自定義控制元件中重寫事件處理方法,

Demo

l  基于回呼的事件傳播

幾乎所有基于回呼的事件處理方法都有一個boolean型別的回傳值,用于標志該處理方法是否已完全處理該事件,

回傳true,表明已處理完,不會傳播出去,

回傳false,表明未處理完,會傳播出去,

幾種方法呼叫的先后順序: 組件的監聽器à組件自身的回呼方法à組件所在Activity的回呼方法,其中任何一個事件處理方法回傳了true,那么該事件將不會繼續向外傳播,

 

四.  啟動活動的方法:

1.    顯式Intent   demo

//第一個引數Context是啟動活動的背景關系,第二個引數是制定要啟動的目標活動,

Intent intent=new Intent(MainActivity.this,SecondActivity.class);

startActivity(intent);

2.    隱式Intent   demo

不明確指定啟動哪一個活動,而是指定一系列action 和category,由系統分析啟動哪一個活動,只有<action>和<category>中的內容同時能匹配上Intent中指定的action和category時,這個活動才能回應該Intent,

       每個Intent只能指定一個action,但可以指定多個category,如果沒有匹配的活動可以啟動程式將崩潰;如果有多個匹配的活動,系統將提供串列讓用戶選擇啟動哪個活動,

 

顯示參考不能啟動其他行程的Activity物件,因為無法獲取其他行程的Activity物件的位元組碼,而隱式啟動則可以通過配置Intent Filter啟動其他行程的Activity物件,因此在應用內,我們一般都是使用顯示啟動的方式啟動Activity,而如果需要啟動其他應用的Activity時,一般使用隱式啟動的方式,

l  更多隱式Intent的用法

       呼叫系統的瀏覽器打開一個網頁,

       Intent intent=new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse("http://www.baidu.com"));

Uri.parse() 將字串決議成一個Uri物件,setData() 方法接收一個Uri物件,指定當前Intent正在操作的資料,

只有<data>標簽中指定的內容和Intent中攜帶的data完全一致時,當前活動才能相應該Intent.

<data>  使用一個或多個指定資料 URI 各個方面(schemehostportpath 等)和 MIME 型別的屬性,宣告接受的資料型別,

https://developer.android.google.cn/guide/components/intents-common#Browser

五.  活動之間傳遞資料

1.    向下一個活動傳遞資料

        Intent intent=new Intent(MainActivity.this,SecondActivity.class);

intent.putExtra("extraData_Key","I am data");

        startActivity(intent);

在下一個活動中將資料取出:

Intent intent=getIntent();

        String data=https://www.cnblogs.com/duhuamei/p/intent.getStringExtra("extraData_Key");

使用Bundle

兩個Activity交換資料通過Intent完成,只需將交換的資料放入Intent中即可,

putExtra(String key, Xxx  value)     向Intent中按key-value對的形式存入資料

Xxx getXxxExtra(String key)         從Intent中按key取出指定型別的資料

putExtras(Bundle data)           向Intent中存入攜帶資料的Bundle

Bundle  getExtras()             從Intent中取出攜帶資料的Bundle

 

向Bundle物件中存取資料:

putXxx(String key, Xxx data)   向Bundle中放入Xxx型別的資料

Xxx  getXxx(String key)       從Bundle中取出Xxx型別的資料

putSerializable(String key, Serializable data)   向Bundle中放入一個可序列化的物件

Serializable  getSerializable(String key)      從Bundle中取出可序列化物件

2.    回傳資料給上一個活動

1)     啟動活動時使用onActivityResult方法:

startActivityForResult(intent,1);

2)     重寫onActivityResult()方法,對回傳的資料進行處理:

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)

 {

switch (requestCode){

        case 1:

            if(resultCode==RESULT_OK) {

                String returnedData=https://www.cnblogs.com/duhuamei/p/data.getStringExtra("data_return");

                Log.d(TAG, "onActivityResult: "+returnedData);

            }

            break;

    }

}

3)     在第二個活動中回傳資料:

    setResult(RESULT_OK,intent);

finish();

 

六.  活動的生命周期

1.    回傳堆疊(Back Stack)

每啟動新的活動,就會覆寫在原來的活動上,按Back鍵會銷毀上面的活動,下面的活動就會重新顯示出來,

       Android使用Task來管理活動,一個Task就是一組存放在堆疊里的活動的集合,這個堆疊被稱為回傳堆疊(Back Stack),參見activity回傳堆疊,

2.    活動狀態

l  運行狀態

l  暫停狀態

l  停止狀態

l  銷毀狀態

3.    活動的生存期

 

4.    體驗活動的生命周期  (Demo:  ActivityLifeCycle)

5.    活動被回收了怎么辦

由于記憶體不足等原因,處于停止狀態的活動有可能被系統回收,當該活動重新可見時,該活動會被重新創建,

onSaveInstanceState()方法在活動被回收之前呼叫,解決活動被回收時保存臨時資料的問題,

1) 活動回收前保存資料

protected void onSaveInstanceState(Bundle outState) {

   outState.putString("data_key","I am data");  //保存資料

super.onSaveInstanceState(outState);//必須呼叫父類的方法

}

2) 活動恢復時恢復資料

在onCreate方法中恢復:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // Always call the superclass first

    if (savedInstanceState != null) {

        String str=savedInstanceState.getString("data_key");//得到資料

        Log.d("MainActivity", "活動恢復,資料為:"+str);

    } else {

        Log.d("MainActivity", "這是活動正常啟動");

    }

//……

}

在onRestoreInstanceState方法中恢復:

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);//可選

String str=savedInstanceState.getString("data_key");//得到資料

Log.d("MainActivity", "恢復資料為:"+str);

}

注意:Always call the superclass implementation of onRestoreInstanceState() so the default implementation can restore the state of the view hierarchy.

開發者可根據具體情況選擇在哪個方法中進行恢復,

3) onSaveInstanceState() 何時被執行

當某個activity變得“容易”被系統回收時,該activity的onSaveInstanceState就會被執行,除非該activity是被用戶主動銷毀的,例如當用戶按BACK鍵(手機下方的回傳鍵)的時候,(why)分為以下幾種情況:

從第一個界面跳轉到第二個界面,第一個界面就會執行onSaveInstanceState

按下home鍵,運行多個其他程式,這時系統不確定會不會將該activity銷毀,所以會執行onSaveInstanceState方法保存值,

關閉手機螢屏時

螢屏方向切換時,例如從豎屏切換到橫屏時,(前提是androidMenifest.xml中對應activity標簽沒有配置<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize"></activity>)

4) onRestoreInstanceState() 何時被執行

Activity被系統回收后,當重新恢復時會呼叫onRestoreInstanceState(),并且是在onStart()之后,The system calls onRestoreInstanceState() only if there is a saved state to restore, so you do not need to check whether the Bundle is null,

       而系統創建一個新的Activity實體或重新創建一個以前的實體時都會呼叫onCreate(),因此在onCreate()中需要判斷Bundle是否為null,

5) 模擬當前應用被系統回收

進入開發者選項,選中不保留活動, 

 

6) 為什么我們的UI界面的值不用我們自己保存也可以自動保存,狀態恢復呢?

開發者只需要為這些控制元件指定一個唯一的ID,剩余的事情就可以自動完成了,如果沒有為控制元件指定ID,則這個控制元件就不會進行自動的資料保存和恢復操作,

 

更多參考:https://developer.android.google.cn/guide/components/activities/activity-lifecycle.html#saras

另外,onSavedInstanceState()只適合保存少量可序列化的資料,use a combination of ViewModel objects, the onSaveInstanceState() method, and/or local storage to persist the UI state across such application and activity instance transitions. 

 

6.    活動的加載模式(Launch Mode)

Often, the way Android manages tasks and the back stack by placing all activities started in succession in the same task and in a "last in, first out" stack.

 

You can interrupt the normal behavior, with attributes in the <activity> manifest element and with flags in the intent that you pass to startActivity().

Launch modes allow you to define how a new instance of an activity is associated with the current task. 

<activity android:name=".SecondActivity" android:launchMode="singleTop"/>

 

standard (the default mode)

無論當前堆疊頂是哪一個Activity都會開始一個新的Activity,

singleTop

如果需要創建的Activity已經處于任務(Task)堆疊頂時,復用該Activity,

singleTask

需要創建的Activity已經處于任務(Task)堆疊時,彈出此Activity上的所有其他Activity,復用該Activity,

singleInstance

啟動一個新的任務(Task)堆疊,且該任務堆疊中只有這唯一一個Activity,整個系統中創建了該Activity,將不再重新創建,

當從回傳堆疊回退時,如果當前回退堆疊為空了,才會顯示另一回退堆疊的活動,

Demo四種啟動模式演示

 

onNewIntent方法的使用

除了standard模式,其他三種方式都可能存在復用Activity的情況,通過Intent啟到一個Activity,如果系統已經存在一個實體,系統就會將請求發送到這個實體上,但新的Intent請求可能要處理新的資料,而這時沒有機會呼叫onCreate方法,怎么辦呢?系統為我們準備了onNewIntent方法,

一般,通過在onCreate和onNewIntent方法中呼叫同一個處理資料的方法,使得不管是創建新的Activity實體,還是復用原來的Activity實體,處理資料的方式保持一致,如下所示:

public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    processExtraData();

 }

 

protected void onNewIntent(Intent intent) {

   super.onNewIntent(intent);

    setIntent(intent);//must store the new intent unless getIntent() will return the old one

   processExtraData();

 }

 

private void processExtraData(){

    Intent intent = getIntent();

    //use the data received here

 }

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/51797.html

標籤:Android

上一篇:Android 狀態欄通知 Notification

下一篇:Android設定EditText不可編輯

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more