日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 老熟妇仑乱视频一区二区 | 日韩电影网址 | 91亚洲精品国偷拍自产在线观看 | 日本三级一区二区三区 | 国产福利在线视频 | 久草热在线视频 | 午夜精品在线播放 | 中字幕视频在线永久在线观看免费 | 最新中文字幕av专区 | 在线看的网站 | 台湾男男gay做爽爽的视频 | www日韩精品| av在线资源网 | 亚洲 欧美 日韩在线 | 欧美亚日韩 | av一区二区在线观看 | 欧美日韩亚洲免费 | 操操操操操操 | 无码人妻丰满熟妇区毛片蜜桃精品 | 中出一区| 日韩一区二区三区视频在线 | 欧美成人一区二区三区四区 | 国产精品大屁股白浆一区 | 一级免费看 | 成人必看www. | 久久久久久国产精品三级玉女聊斋 | 亚洲综合色在线 | 色多多在线观看 | 亚洲精品男人的天堂 | 亚洲色成人www永久网站 | 日本特级淫片 | 裸体黄色片 | 午夜国产小视频 | 亚洲区免费 | 色窝窝无码一区二区三区 | 午夜久久视频 | 免费簧片在线观看 | 天天操天天干天天爱 | 在线日韩一区二区 | 成人啪啪 | 美女高潮黄又色高清视频免费 | 少妇荡乳情欲办公室456视频 | 久久狠狠高潮亚洲精品 | 在线观看视频二区 | 免费黄色一级 | 日韩精品在线观看免费 | 黑人无套内谢中国美女 | 亚洲一区二区观看 | av中文资源 | 琪琪电影午夜理论片八戒八戒 | 日韩av中文字幕在线播放 | 久久久久久久性 | 国产高清自拍av | 午夜影剧院 | 91网站在线观看视频 | 欧美精品一区三区 | 国产精品无人区 | 诱惑の诱惑筱田优在线播放 | 亚洲天堂v | 男人插女人视频网站 | 中国美女洗澡免费看网站 | 亚洲成人播放器 | 97视频在线| 男女啪啪资源 | 日本精品一区二区三区视频 | 国产精品亚洲一区 | 黄色一级免费片 | 一本色道久久88亚洲精品综合 | 日本熟妇一区二区 | 黄色高清无遮挡 | 三级黄色在线视频 | 国产一区二区三区四区五区 | 亚洲欧美一级 | 亚洲色图网站 | 免费观看日批视频 | 色七七桃花影院 | 91偷拍一区二区三区精品 | 国产一区导航 | 曰本黄色大片 | 国产一区麻豆 | 成人综合久久 | 午夜成年人视频 | 日韩avwww| 欧美日韩中文国产一区发布 | 琪琪色在线视频 | 日本三级午夜理伦三级三 | 国产精品黑人一区二区三区 | 国产日韩欧美在线 | 日本三级一区 | 九九九九热 | 好色999 | 国产热热 | 精品国产av一区二区三区 | 亚州av影院 | 成人观看视频 | 瑟瑟网站在线观看 | 国产欧美一区二区三区精品酒店 | 性欧美ⅴideo另类hd | 午夜伦理在线观看 |