溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android常見(jiàn)小問(wèn)題匯總

發(fā)布時(shí)間:2020-08-03 23:08:30 來(lái)源:網(wǎng)絡(luò) 閱讀:624 作者:510202 欄目:移動(dòng)開(kāi)發(fā)

1  問(wèn)題: 登陸頁(yè)面 輸入時(shí)賬號(hào)時(shí) 彈出鍵盤覆蓋 密碼輸入框

    期望:輸入能夠把輸入頁(yè)面頂上去。

    解決方法:Activity設(shè)置成非全屏且:android:windowSoftInputMode = "adjustResize" 


2 問(wèn)題:點(diǎn)擊EditText輸入兩次才彈出DatePickerDialog。

    期望:點(diǎn)擊一次彈出DatePickerDialog

    解決方法:EditText改為TextView即可。


3 問(wèn)題:The content of the adapter has changed but ListView did not receive a notification

    期望:不出現(xiàn)該bug

     思路:   在Android開(kāi)發(fā)過(guò)程中,使用了大量的ListView,發(fā)現(xiàn)這個(gè)錯(cuò)誤偶爾會(huì)出現(xiàn)。特別是做壓力測(cè)試的時(shí)候,不停的點(diǎn)擊刷新,更容易出現(xiàn)這個(gè)錯(cuò)誤。代碼中已經(jīng)使用了Adapter的notifyDataSetChanged()方法通知UI更新了,但是還是會(huì)出現(xiàn)這個(gè)錯(cuò)誤。究其根本原因,還是線程之間同步的問(wèn)題。比如,線程1更新了Adapter中的內(nèi)容,卻還沒(méi)有來(lái)得及通知內(nèi)容已經(jīng)更新,就又有線程2更新了Adapter中的內(nèi)容,這個(gè)時(shí)候如果線程1再通知內(nèi)容更新,就會(huì)出現(xiàn)上述異常了。

 

在此提出一些解決辦法:

對(duì)線程進(jìn)行管理,如果當(dāng)前Actitivty暫停了,及時(shí)停止這些線程。

數(shù)據(jù)更新后,要及時(shí)使用notifyDataSetChanged()方法通知UI,避免出現(xiàn)數(shù)據(jù)不一致的情況。

數(shù)據(jù)的更新,最好放在主線程中進(jìn)行。這樣可以使用同步數(shù)據(jù)更新與通知內(nèi)容更新部分的代碼。

 

最后補(bǔ)充一條我最終解決問(wèn)題的方法:

在用到多線程的時(shí)候,可以對(duì)數(shù)據(jù)做緩存處理, 比如與ListView綁定的數(shù)據(jù)存儲(chǔ)在ArrayList (dataList), 在線程中先將數(shù)據(jù)加入到臨時(shí)ArrayList(tmpList) , 最后在調(diào)用notifyDataSetChanged()方法通知UI更新之前, 把臨時(shí)ArrayList(tmpList)中的數(shù)據(jù)更新到ArrayList(dataList)中, 然后清空臨時(shí)ArrayList(tmpList)數(shù)據(jù)。

參考:http://blog.csdn.net/garybook/article/details/7498342


4 問(wèn)題:內(nèi)存泄露

    思路:使用Memory Analyzer Tool(MAT)內(nèi)存分析工具進(jìn)行分析。


5  Jpush推送相關(guān)問(wèn)題:

    1  關(guān)于不活躍用戶:長(zhǎng)期未打開(kāi)APP,則會(huì)被Jpush標(biāo)志為不活躍用戶,之后不再接收推送,(除非用戶主動(dòng)打開(kāi)APP,此句話待驗(yàn)證)

    2  新建的APP,所有安裝用戶都是活躍用戶。

    3  小米的手機(jī),普通App默認(rèn)是非自啟動(dòng),自啟動(dòng)廣播也被屏蔽。

6  EditText焦點(diǎn)鍵盤彈出問(wèn)題:

     取消:

                在EditText的父級(jí)控件中找一個(gè),設(shè)置成 

                android:focusable="true" 
                android:focusableInTouchMode="true" 

    獲?。?br />

                

7 在Eclipse添加Android兼容包( v4、v7 appcompat )

http://www.cnblogs.com/kissazi2/p/3644848.html  


8 ScrollView 和Listview沖突的解決方案:

    http://www.xuebuyuan.com/2191777.html


9 不同版本ADT混淆方式:

參考:http://www.tuicool.com/articles/amIn6vj

    Android常見(jiàn)小問(wèn)題匯總


10  自動(dòng)開(kāi)關(guān)機(jī)實(shí)現(xiàn):

    http://www.cnblogs.com/melaniedeng/archive/2012/02/16/2355066.html



11   FragmentStatePagerAdapter+viewpager第二次進(jìn)入該fragment不顯示數(shù)據(jù)

    解決方法:

         在含有ViewPager的Fragment的onCreateView方法中添加代碼:

                    if (view != null) {

                    ViewGroup parent = (ViewGroup) view.getParent();

                    if (parent != null) {

                    parent.removeView(view);

                    }

                    return view;

                    }


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI