日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android activity使用,android,NativeActivity使用

發布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android activity使用,android,NativeActivity使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

android現在已經支持C/C++ NativeActivity開發

android提供

頭文件。所以你要使用的話,要引入這個頭文件

1,NativeActivity 入口

入口函數是void?ANativeActivity_onCreate(ANativeActivity*?activity,

void*?savedState,?size_t?savedStateSize)

你也可以自己在manifest里面使用metadata name=”android.app.func_name”定義一個特殊的函數名

因為頭文件就是這么定義的。而且必須有。不然不能使用native activity。它的定義如下:/**

*?This?is?the?function?that?must?be?in?the?native?code?to?instantiate?the

*?application's?native?activity.??It?is?called?with?the?activity?instance?(see

*?above);?if?the?code?is?being?instantiated?from?a?previously?saved?instance,

*?the?savedState?will?be?non-NULL?and?point?to?the?saved?data.??You?must?make

*?any?copy?of?this?data?you?need?--?it?will?be?released?after?you?return?from

*?this?function.

*/

typedef?void?ANativeActivity_createFunc(ANativeActivity*?activity,

void*?savedState,?size_t?savedStateSize);

/**

*?The?name?of?the?function?that?NativeInstance?looks?for?when?launching?its

*?native?code.??This?is?the?default?function?that?is?used,?you?can?specify

*?"android.app.func_name"?string?meta-data?in?your?manifest?to?use?a?different

*?function.

*/

extern?ANativeActivity_createFunc?ANativeActivity_onCreate;

2,定義native activity的生命周期回調接口函數。

這些接口的名字和java端的是類似的。它的定義如下:/**

*?These?are?the?callbacks?the?framework?makes?into?a?native?application.

*?All?of?these?callbacks?happen?on?the?main?thread?of?the?application.

*?By?default,?all?callbacks?are?NULL;?set?to?a?pointer?to?your?own?function

*?to?have?it?called.

*/

typedef?struct?ANativeActivityCallbacks?{

/**

*?NativeActivity?has?started.??See?Java?documentation?for?Activity.onStart()

*?for?more?information.

*/

void?(*onStart)(ANativeActivity*?activity);

/**

*?NativeActivity?has?resumed.??See?Java?documentation?for?Activity.onResume()

*?for?more?information.

*/

void?(*onResume)(ANativeActivity*?activity);

/**

*?Framework?is?asking?NativeActivity?to?save?its?current?instance?state.

*?See?Java?documentation?for?Activity.onSaveInstanceState()?for?more

*?information.??The?returned?pointer?needs?to?be?created?with?malloc();

*?the?framework?will?call?free()?on?it?for?you.??You?also?must?fill?in

*?outSize?with?the?number?of?bytes?in?the?allocation.??Note?that?the

*?saved?state?will?be?persisted,?so?it?can?not?contain?any?active

*?entities?(pointers?to?memory,?file?descriptors,?etc).

*/

void*?(*onSaveInstanceState)(ANativeActivity*?activity,?size_t*?outSize);

/**

*?NativeActivity?has?paused.??See?Java?documentation?for?Activity.onPause()

*?for?more?information.

*/

void?(*onPause)(ANativeActivity*?activity);

/**

*?NativeActivity?has?stopped.??See?Java?documentation?for?Activity.onStop()

*?for?more?information.

*/

void?(*onStop)(ANativeActivity*?activity);

/**

*?NativeActivity?is?being?destroyed.??See?Java?documentation?for?Activity.onDestroy()

*?for?more?information.

*/

void?(*onDestroy)(ANativeActivity*?activity);

/**

*?Focus?has?changed?in?this?NativeActivity's?window.??This?is?often?used,

*?for?example,?to?pause?a?game?when?it?loses?input?focus.

*/

void?(*onWindowFocusChanged)(ANativeActivity*?activity,?int?hasFocus);

/**

*?The?drawing?window?for?this?native?activity?has?been?created.??You

*?can?use?the?given?native?window?object?to?start?drawing.

*/

void?(*onNativeWindowCreated)(ANativeActivity*?activity,?ANativeWindow*?window);

/**

*?The?drawing?window?for?this?native?activity?has?been?resized.??You?should

*?retrieve?the?new?size?from?the?window?and?ensure?that?your?rendering?in

*?it?now?matches.

*/

void?(*onNativeWindowResized)(ANativeActivity*?activity,?ANativeWindow*?window);

/**

*?The?drawing?window?for?this?native?activity?needs?to?be?redrawn.??To?avoid

*?transient?artifacts?during?screen?changes?(such?resizing?after?rotation),

*?applications?should?not?return?from?this?function?until?they?have?finished

*?drawing?their?window?in?its?current?state.

*/

void?(*onNativeWindowRedrawNeeded)(ANativeActivity*?activity,?ANativeWindow*?window);

/**

*?The?drawing?window?for?this?native?activity?is?going?to?be?destroyed.

*?You?MUST?ensure?that?you?do?not?touch?the?window?object?after?returning

*?from?this?function:?in?the?common?case?of?drawing?to?the?window?from

*?another?thread,?that?means?the?implementation?of?this?callback?must

*?properly?synchronize?with?the?other?thread?to?stop?its?drawing?before

*?returning?from?here.

*/

void?(*onNativeWindowDestroyed)(ANativeActivity*?activity,?ANativeWindow*?window);

/**

*?The?input?queue?for?this?native?activity's?window?has?been?created.

*?You?can?use?the?given?input?queue?to?start?retrieving?input?events.

*/

void?(*onInputQueueCreated)(ANativeActivity*?activity,?AInputQueue*?queue);

/**

*?The?input?queue?for?this?native?activity's?window?is?being?destroyed.

*?You?should?no?longer?try?to?reference?this?object?upon?returning?from?this

*?function.

*/

void?(*onInputQueueDestroyed)(ANativeActivity*?activity,?AInputQueue*?queue);

/**

*?The?rectangle?in?the?window?in?which?content?should?be?placed?has?changed.

*/

void?(*onContentRectChanged)(ANativeActivity*?activity,?const?ARect*?rect);

/**

*?The?current?device?AConfiguration?has?changed.??The?new?configuration?can

*?be?retrieved?from?assetManager.

*/

void?(*onConfigurationChanged)(ANativeActivity*?activity);

/**

*?The?system?is?running?low?on?memory.??Use?this?callback?to?release

*?resources?you?do?not?need,?to?help?the?system?avoid?killing?more

*?important?processes.

*/

void?(*onLowMemory)(ANativeActivity*?activity);

}?ANativeActivityCallbacks;

這里它定義了16個函數指針,你需要在ANativeActivity_onCreate函數里面將這些自己定義的回調函數賦給ANativeActivity的callback的相應函數指針。例如:void?ANativeActivity_onCreate(ANativeActivity*?activity,

void*?savedState,?size_t?savedStateSize)?{

LOGV("Creating:?%p\n",?activity);

activity->callbacks->onDestroy?=?onDestroy;

activity->callbacks->onStart?=?onStart;

activity->callbacks->onResume?=?onResume;

activity->callbacks->onSaveInstanceState?=?onSaveInstanceState;

activity->callbacks->onPause?=?onPause;

activity->callbacks->onStop?=?onStop;

activity->callbacks->onConfigurationChanged?=?onConfigurationChanged;

activity->callbacks->onLowMemory?=?onLowMemory;

activity->callbacks->onWindowFocusChanged?=?onWindowFocusChanged;

activity->callbacks->onNativeWindowCreated?=?onNativeWindowCreated;

activity->callbacks->onNativeWindowDestroyed?=?onNativeWindowDestroyed;

activity->callbacks->onInputQueueCreated?=?onInputQueueCreated;

activity->callbacks->onInputQueueDestroyed?=?onInputQueueDestroyed;

//其他代碼...

}

上面的onDestroy這些都是你自己定義的接口函數。函數類型要和它提供的接口函數指針一樣。

3.manifest文件的配置

manifest里面其他是一樣的,只有actvity和一般的不一樣

android:label="@string/app_name"

android:configChanges="orientation|keyboardHidden">

android:value="NativeActivity"?/>

這里有兩種情況。

1.完全不用java

上面這個例子就是完全不用java的。這時候你的activity的android:name屬性就必須等于

android.app.NativeActivity。另外在application里添加屬性android:hasCode=”false”,表示

沒有java代碼

2,有一個NativeActivity子類

你是java里繼承NativeActivity,這時activity的android:name屬性就等于你自己的activity名字。這個

activity必須是NativeActivity的子類,不然沒法用NDK的東西。application里添加屬性

android:hasCode=”ture”。

以上只是簡單介紹了NativeActivity,你要完全使用它,還需學習ALooper,pipe和pthread等知識。

總結

以上是生活随笔為你收集整理的android activity使用,android,NativeActivity使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美69式性猛交 | 爱爱小视频免费看 | 91精品在线播放 | 国产懂色av | 欧美顶级毛片在线播放 | 国产aaa | 三级国产三级在线 | 视频二区欧美 | 国产影音先锋 | 成人免费看黄 | 国产二区自拍 | 国产精品一二三区在线观看 | 黄色小视屏 | 中国国产bdsm紧缚捆绑 | 日一区二区 | 欧美国产一区二区三区 | 亚洲三级成人 | 日韩精品系列 | 国产亚洲性欧美日韩在线观看软件 | 亚洲av无码电影在线播放 | 91吃瓜今日吃瓜入口 | 日韩毛片儿 | 朋友人妻少妇精品系列 | 亚洲看片网 | 97人妻精品一区二区三区免费 | 强侵犯の奶水授乳羞羞漫虐 | 久草视频免费播放 | 麻豆视频免费网站 | 毛片毛片毛片毛片 | 一级黄色小视频 | 色六月婷婷 | 亚洲精品色午夜无码专区日韩 | 日日艹夜夜艹 | 国产精品自拍第一页 | 国产女主播视频 | 午夜网站免费 | 欧美成人小视频 | 国产激情在线视频 | 国产黄色片在线免费观看 | 在线观看黄色片网站 | 亚洲黄色在线播放 | 亚洲中午字幕 | yy1111111| 国产成人精品一区二区三区无码熬 | 人妻无码中文久久久久专区 | 精品一区二区在线视频 | 国产日韩一区二区在线观看 | 狠狠操婷婷 | 超碰人人干人人 | 女女同性高清片免费看 | 午夜久久久久久久久久久 | 国产精品亚洲自拍 | 少妇又色又紧又大爽又刺激 | 日韩人妻无码一区二区三区 | 久久99视频精品 | 在线观看麻豆av | 最新在线中文字幕 | 日日拍夜夜拍 | 色噜噜狠狠一区二区三区 | 丰满的女邻居 | www.日韩av.com| www日日日| 国产麻豆精品一区二区 | 末路1997全集免费观看完整版 | 阿v天堂在线观看 | 色屁屁ts人妖系列二区 | 亚洲专区第一页 | 神马伦理视频 | 爱爱视频久久 | 中文字幕午夜 | 亚洲天堂男人av | 亚洲最黄网站 | 最全aⅴ番号库网 | 国产东北女人做受av | 久久久蜜桃一区二区 | 亚洲成人二区 | 国产人人爱 | 亚洲aav | 色男人天堂av | 亚洲成人精品久久久 | 人人爽人人爽人人爽人人爽 | 欧美毛片基地 | 麻豆av电影在线 | 可以在线观看的av | 青青青免费在线 | 精品国产999 | 澳门色网| 日韩女优网站 | 在线中文字幕一区 | 夜夜爱爱 | 国产又色又爽又高潮免费 | 成为性瘾网黄的yy对象后 | 成人亚洲一区二区 | 日韩成人免费视频 | 精品一区二区视频在线观看 | 六月丁香激情综合 | 国产无套视频 | 一级全黄色片 | 久久天堂电影 |