一、前言
創(chuàng)新互聯(lián)公司專業(yè)網(wǎng)站制作、成都網(wǎng)站制作,集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷、軟文推廣等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計(jì)制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
這系列文章是自己在平時(shí)開發(fā)過程中遇到的問題。之前只是記在云筆記上面,現(xiàn)在整理一下,發(fā)出來共享。
ps:像那些什么沒有注冊(cè)Activity呀,權(quán)限呀等最基本的就不再贅述。
二、ADB連接異常
有時(shí)我們發(fā)現(xiàn),即使自己從任務(wù)管理器里面把a(bǔ)db.exe給干掉了,但還是不行,這時(shí),你就可以嘗試以下操作:
[2014-07-30 17:09:11 - QtActivity] The connection to adb is down, and a severe error has occured.
[2014-07-30 17:09:11 - QtActivity] You must restart adb and Eclipse.
[2014-07-30 17:09:11 - QtActivity] Please ensure that adb is correctly located at ‘D:\InstallFile\AndroidDevelop\ADT\sdk\platform-tools\adb.exe’ and can be executed.
adb起動(dòng)失?。?/p>
1,殺掉其它的adb.exe看,如果不行,
2,看sdk\tools路徑下面有沒有
hprof-conv.exe
如果有,則把它復(fù)制到sdk\platform_tools下
3,如果沒有,剛看sdk\platform_tools下有沒有
hprof-conv.exe
如果有,剛復(fù)制到tools下。
4,如果兩者都沒有,剛下一個(gè)
hprof-conv.exe
三、java.lang.IllegalStateException: Activity has been destroyed
這個(gè)異常在切換Fragment中比較容易出現(xiàn),稍不注意就會(huì)出現(xiàn)如下異常:
FATAL EXCEPTION: main12-0909:20:14.689: E/AndroidRuntime(31223): java.lang.IllegalStateException: Activity has been destroyed12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)12-0909:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.init(DongTaiFragment.java:209)12-0909:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.onCreateView(DongTaiFragment.java:68)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.handleCallback(Handler.java:605)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.dispatchMessage(Handler.java:92)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Looper.loop(Looper.java:154)12-0909:20:14.689: E/AndroidRuntime(31223): at android.app.ActivityThread.main(ActivityThread.java:4624)12-0909:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invokeNative(Native Method)12-0909:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invoke(Method.java:511)12-0909:20:14.689: E/AndroidRuntime(31223): atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)12-0909:20:14.689: E/AndroidRuntime(31223): atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)12-0909:20:14.689: E/AndroidRuntime(31223): at dalvik.system.NativeStart.main(Native Method)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
經(jīng)查,說這個(gè)是當(dāng)前android-support-v4版本的一個(gè)bug,因?yàn)樵诋?dāng)fragment進(jìn)行到detached狀態(tài)時(shí),它會(huì)重置它的內(nèi)部狀態(tài)。
然而,它并沒有重置mChildFragmentManager.這導(dǎo)致在Fragment重新attach時(shí),它(fragment)沒有重新attachm childFragmentManager,從而引發(fā)了上面的異常.
解決方案:
在每個(gè)調(diào)用getChildFragmentManager()的fragment中復(fù)寫onDetach()方法:
@OverridepublicvoidonDetach() {super.onDetach();try{Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");childFragmentManager.setAccessible(true);childFragmentManager.set(this,null);}catch(NoSuchFieldException e) {thrownewRuntimeException(e);}catch(IllegalAccessException e) {thrownewRuntimeException(e);}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
四、java.lang.IllegalArgumentException: Illegal character in query at index
這個(gè)異常,在我們拼接請(qǐng)求參數(shù)時(shí),可能會(huì)碰到,原因是里面的特殊字符轉(zhuǎn)換異常。解決辦法如下:
url轉(zhuǎn)換問題
String url = baseUrl + “?” + “name=” + name + “age=” + age;
url = url.replaceAll(“”, “%26”);
url = url.replaceAll(” “, “%20”);
解釋如下:
特殊符號(hào)替換符號(hào)
?%3F
%26
|%124
=%3D
#%23
/%2F
+%2B
%%25
空格%20
五、eclipse連接小米2S調(diào)試程序的問題
雖然快2年沒用過eclipse了,但這個(gè)問題還是貼出來,也許正好有正在用eclipse的同學(xué)遇到了此問題:
小米Mi2S連接到eclipse上無法識(shí)別。即使開啟了調(diào)試模式,也無法識(shí)別.終于找到了一個(gè)可用的方法。
方法
用數(shù)據(jù)線連接手機(jī)和電腦。
打開手機(jī)撥號(hào)界面。
在撥號(hào)界面按 # #717717# # 自動(dòng)就開啟了。
在通知欄會(huì)出現(xiàn)一個(gè) Diag USB port enable。
當(dāng)然,應(yīng)該是需要ROOT權(quán)限的。
這時(shí)候你的PC機(jī)會(huì)彈出安裝設(shè)備驅(qū)動(dòng)。
如果不成功,多插拔幾次試試。
ok!安裝完就搞定了!這時(shí)候打開eclipse就會(huì)在Driver里面看到你的手機(jī)了。
注意事項(xiàng)
在PC機(jī)上安裝新硬件向?qū)r(shí)候可能會(huì)遭遇到缺少dll文件,比如我就遇到缺少了WinUSBCoInstaller2.dll,這個(gè)問題。這時(shí)候就要去網(wǎng)上找找嘍。這個(gè)東西分x64 和 x86的,注意不要搞錯(cuò)了!
如果先打開eclipse,再安裝的話,可能導(dǎo)致eclipse掛掉,不明原因,可能是我機(jī)器配置不行。兩次均有這種狀況。所以建議先安裝后再開eclipse。
若使用的是vivo手機(jī),Android系統(tǒng)是多個(gè)功能和服務(wù)的集合體,比如權(quán)限管理、藍(lán)牙設(shè)置、電話服務(wù)、指紋與密碼等常用功能有關(guān)的耗電會(huì)被計(jì)入Android系統(tǒng),如果第三方軟件使用到這些功能,電量也會(huì)被計(jì)入Android系統(tǒng),所以我們看到Android系統(tǒng)程序耗電較高,實(shí)際和第三方軟件的使用情況有關(guān),您可以使用“一鍵加速”清理后臺(tái)不必要的程序,適當(dāng)調(diào)低屏幕亮度和音量;另外進(jìn)入設(shè)置--電池,根據(jù)手機(jī)電量情況選擇合適的省電模式,延長(zhǎng)手機(jī)續(xù)航時(shí)間。
1.Android是一種以Linux與JAVA為基礎(chǔ)的開放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。中國(guó)大陸地區(qū)較多人使用“安卓”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),被谷歌收購(gòu)后則由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā),主要支持手機(jī)與平板。
Android本身是一個(gè)權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個(gè)應(yīng)用都以唯一的一個(gè)系統(tǒng)識(shí)別身份運(yùn)行(Linux用戶ID與群組ID)。系統(tǒng)的各部分也分別使用各自獨(dú)立的識(shí)別方式。Linux就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開。
2.Android應(yīng)用異常后會(huì)自動(dòng)重啟是Android應(yīng)用異常后的安全警報(bào)!
所以你是用Android手機(jī)時(shí)偶爾會(huì)因?yàn)槟承┊惓?dǎo)致正在使用的應(yīng)用出現(xiàn)異常并強(qiáng)制關(guān)閉并重啟,
3,解決此類問題你需要捕獲出現(xiàn)的異常并做處理。這些在你手機(jī)的設(shè)置中就可進(jìn)行設(shè)置,主動(dòng)權(quán)在你,在Java中有兩類異常,分別是Error和RuntimeException,前者是不需要我們?nèi)ヌ幚淼?,我們處理的往往是后者。那么如何捕獲線程在運(yùn)行時(shí)的異常呢,我們可以使用自定義類實(shí)現(xiàn)
Thread.UncaughtExceptionHandler 接口并復(fù)寫uncaughtException(Thread thread, Throwable ex)方法來實(shí)現(xiàn)對(duì)運(yùn)行時(shí)線程進(jìn)行異常處理。在Android中我們可以實(shí)現(xiàn)自己的Application類,然后實(shí)現(xiàn) UncaughtExceptionHandler接口,并在uncaughtException方法中處理異常,這里我們關(guān)閉App并啟動(dòng)我們需要的Activity,下面看代碼:
public class MyApplication extends Application implements
Thread.UncaughtExceptionHandler {
@Override
public void onCreate() {
super.onCreate();
//設(shè)置Thread Exception Handler
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
System.out.println("uncaughtException");
System.exit(0);
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
最后需要在Manifest中配置Application的標(biāo)簽android:name=".MyApplication",讓整個(gè)應(yīng)用程序使用我們自定義的Application類,這樣就實(shí)現(xiàn)了當(dāng)應(yīng)用遇到崩潰異常時(shí)重啟應(yīng)用的效果。
我們?cè)谌我庖粋€(gè)Activity中主動(dòng)拋出下面異常,就會(huì)發(fā)現(xiàn)應(yīng)用遇到異常后重啟了,如果不處理的話,應(yīng)用在遇到異常后就關(guān)閉了。
1.我們需要首先收集產(chǎn)生崩潰的手機(jī)信息,因?yàn)锳ndroid的樣機(jī)種類繁多,很可能某些特定機(jī)型下會(huì)產(chǎn)生莫名的bug。
2.將手機(jī)的信息和崩潰信息寫入文件系統(tǒng)中。這樣方便后續(xù)處理。
3.崩潰的應(yīng)用需要可以自動(dòng)重啟。重啟的頁面設(shè)置成反饋頁面,詢問 用戶是否需要上傳崩潰報(bào)告。
4.用戶同意后,即將2中寫入的崩潰信息文件發(fā)送到自己的服務(wù)器。
進(jìn)行壓力測(cè)試主要是保證app的穩(wěn)定性,而獲取CRASH、ANR的相關(guān)信息是為了快速定位問題。
什么是CRASH?app異常退出,影響用戶后續(xù)正常使用,這種情況就可以列為app崩潰
什么是ANR? 全拼為Application Not Responding ?即應(yīng)用程序無響應(yīng)
1、KeyDispatchTimeout (5 seconds) --按鍵或觸摸事件在特定時(shí)間內(nèi)無響應(yīng)
2、BroadcastTimeout (10 seconds) --BroadcastReceiver 在特定時(shí)間內(nèi)無法處理完成
3、ServiceTimeout (20 seconds) --Service在特定的時(shí)間內(nèi)無法處理完成
CRASH 以及ANR 的出現(xiàn)都會(huì)對(duì)用戶的使用出現(xiàn)非友好的體驗(yàn),所以在測(cè)試過程盡早、盡快的發(fā)現(xiàn)這類問題
以上是關(guān)于Android App之壓力測(cè)試的理論部分,接下來會(huì)針對(duì)性的更新實(shí)踐內(nèi)容
網(wǎng)頁題目:android異常,android運(yùn)行時(shí)異常
網(wǎng)站地址:http://chinadenli.net/article14/dsdisde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制開發(fā)、企業(yè)建站、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)