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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android模拟器 后退键,MainActivity返回键模拟home效果,容易出现的问题

發(fā)布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android模拟器 后退键,MainActivity返回键模拟home效果,容易出现的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多app都會將返回鍵模擬成home效果,代碼如下:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

IntentWrapper.onBackPressed(this);

moveTaskToBack(true);

}

return true;

}

return super.onKeyDown(keyCode, event);

}

這是之前寫的代碼,但是在bugtags統(tǒng)計上出現(xiàn)很多異常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.android.server.am.TaskRecord.setTaskToReturnTo(int)' on a null object reference at android.os.Parcel.readException(Parcel.java:1565)

at android.os.Parcel.readException(Parcel.java:1512)

at android.app.ActivityManagerProxy.moveActivityTaskToBack(ActivityManagerNative.java:3291)

at android.app.Activity.moveTaskToBack(Activity.java:5088)

at com.icourt.alpha.activity.MainActivity.onKeyDown(MainActivity.java)

at android.view.KeyEvent.dispatch(KeyEvent.java:2651)

at android.app.Activity.dispatchKeyEvent(Activity.java:2785)

at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java)

at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java)

at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java)

at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2331)

at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4230)

at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4184)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3724)

at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3787)

at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3743)

at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3870)

at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3751)

at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3927)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3724)

at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3787)

at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3743)

at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3751)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3724)

at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3787)

at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3743)

at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3903)

at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4064)

at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2218)

at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1859)

at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1850)

at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2195)

at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)

at android.os.MessageQueue.nativePollOnce(Native Method)

at android.os.MessageQueue.next(MessageQueue.java:150)

at android.os.Looper.loop(Looper.java:139)

at android.app.ActivityThread.main(ActivityThread.java:5532)

at java.lang.reflect.Method.invoke(Native Method)

at java.lang.reflect.Method.invoke(Method.java:372)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

在MainActivity.onKeyDown這個方法中出現(xiàn)的異常,看源碼:

/**

* Move the task containing this activity to the back of the activity

* stack. The activity's order within the task is unchanged.

*

* @param nonRoot If false then this only works if the activity is the root

* of a task; if true it will work for any activity in

* a task.

*

* @return If the task was moved (or it was already at the

* back) true is returned, else false.

*/

public boolean moveTaskToBack(boolean nonRoot) {

try {

return ActivityManagerNative.getDefault().moveActivityTaskToBack(

mToken, nonRoot);

} catch (RemoteException e) {

// Empty

}

return false;

}

大概意思是說,nonRoot 為 false 時,當(dāng)前activity必須為棧底,也就是最底層的activity,如果其他activity沒有及時finish掉,就會出現(xiàn)異常,導(dǎo)致崩潰;nonRoot 為 true 時,不需要考慮當(dāng)前activity是否在棧底。看完源碼瞬間柳暗花明又一村,nice。

在這記錄一下,出現(xiàn)的手機(jī)機(jī)型:android 5.1.1 (22),OPPO:OPPO R7sm:arm64-v8a 特別注意!!!

補(bǔ)充說明:

經(jīng)過反復(fù)測試,如果設(shè)置為true,簽名打包之后會失效:

在第一次安裝后,activity管理?xiàng)K坪鯇M(jìn)入的activity不做任何判斷與標(biāo)記(是否是棧頂?shù)腶ctivity),每次都會入棧,在將棧清空后又回復(fù)正常(就是Task對activity做記錄了,哪個處于棧頂,是否在棧里等);

1、moveTaskToBack(true);不判斷當(dāng)前activity是否在棧底

2、moveTaskToBack(false);先判斷當(dāng)前activity是否在棧底

再根據(jù)第一次安裝,如果設(shè)為true,每次點(diǎn)擊icon,都會重啟app,如果設(shè)為false,則會找到棧內(nèi)的activity,直接顯示。

最終代碼:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

IntentWrapper.onBackPressed(this);

try {

moveTaskToBack(false);

} catch (Exception e) {

bugSync("返回鍵模擬HOME出錯", e);

return super.onKeyDown(keyCode, event);

}

}

return super.onKeyDown(keyCode, event);

}

/**

* 防止華為機(jī)型未加入白名單時按返回鍵回到桌面再鎖屏后幾秒鐘進(jìn)程被殺

*/

public static void onBackPressed(Activity a) {

try {

Intent launcherIntent = new Intent(Intent.ACTION_MAIN);

launcherIntent.addCategory(Intent.CATEGORY_HOME);

a.startActivity(launcherIntent);

} catch (Throwable e) {

e.printStackTrace();

}

}

總結(jié)

以上是生活随笔為你收集整理的android模拟器 后退键,MainActivity返回键模拟home效果,容易出现的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 影视先锋av资源 | 玉足调教丨vk24分钟 | 日本免费网 | 久久av资源网 | 欧美一卡 | 欧美日韩一区二区三区四区五区 | 香蕉视频黄色片 | 一区二区三区四区精品 | 99re色 | 日韩视频在线观看二区 | 亚洲图片偷拍区 | 亚洲精品69 | 日鲁鲁 | 精品久久久久久久久久久久久久久久久久 | 精品人妻一区二区三区日产 | 波多野结衣免费观看视频 | 黄色片免费观看视频 | 免费视频91蜜桃 | 免费视频网站在线观看入口 | 国产精品久久久久久久成人午夜 | 亚洲精品国产精品乱码不99按摩 | 台湾久久 | 亚洲欧美黄色片 | 高h奶汁双性受1v1 | 欧美激情成人在线 | 天堂在线视频观看 | 欧美在线综合 | 青青草综合在线 | 日本国产精品 | 337p日本大胆噜噜噜鲁 | 中出精品 | 女人高潮特级毛片 | 蜜桃av免费 | 国产一级久久久久毛片精品 | 三级免费黄录像 | 亚洲欧美日韩在线一区二区 | 精品人妻一区二区免费视频 | 国产在线欧美在线 | 久久久成人av | 国产啊啊啊啊 | 三级a毛片| 欧美国产免费 | av黄色在线观看 | 办公室大战高跟丝袜秘书经理ol | 成人深夜福利 | 麻豆精品| 综合狠狠 | 二色av | 伊人久久久久久久久久 | 日韩欧美小视频 | 免费看黄在线网站 | 国产毛片久久久久久 | 99久久精品久久久久久清纯 | 岛国av片 | 日韩爆操 | 我们2018在线观看免费版高清 | 欧美大片www | 国产一级18片视频 | 国产传媒在线观看 | 亚洲第一天堂久久 | 97精品国产97久久久久久免费 | 欧美视频 | 亚洲综合图色 | 日韩啪啪网站 | 亲嘴扒胸摸屁股激烈网站 | 日韩av无码一区二区三区不卡 | 欧美亚洲成人网 | av私库| 小明天天看 | 色噜噜狠狠一区二区 | 深爱五月激情五月 | wwwxxx黄色| 国产肥白大熟妇bbbb视频 | 亚洲三级在线免费观看 | 精品国产一二区 | 3p在线视频| 亚洲精品在线影院 | 少妇做爰免费视看片 | 亚洲精品中文字幕乱码无线 | 琪琪成人 | 久久久欧美精品sm网站 | 亚洲精品一区二区三区在线观看 | 亚洲综合图色40p | 黄色小说网站在线观看 | 蜜桃中文字幕 | 69视频网址 | 91福利在线观看视频 | 伊人久久91| 国产在线一区二区三区四区 | 91视频免费观看 | 久久久新| 日本少妇b | 久久精品观看 | 一级黄色在线视频 | 无码丰满熟妇 | 午夜激情视频网 | 日韩一区二区三区在线观看视频 | 成人午夜精品一区二区三区 | 中文字幕人成 |