中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Android筆記:常見錯(cuò)誤問題及解決方法匯總-創(chuàng)新互聯(lián)

1.Android java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)宜君,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
    E/AndroidRuntime(7200): Uncaught handler: thread Thread-8 exiting due to uncaught exception
    E/AndroidRuntime( 7200): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

原因是非主線程中默認(rèn)沒有創(chuàng)建Looper對(duì)象,需要先調(diào)用Looper.prepare()啟用Looper。

解決方法:

new Thread() {

public void run() {

 Looper.prepare();

 mPst.startPushService();

 mPst.sendJson2Server(qJson);//上線發(fā)消息給server

 Looper.loop();

 }

 }.start();

加上上面紅色兩行。

2.java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131362336, class android.widget.ListView) with Adapter(class com.manjay.housebox.slidemenu.SpecialListFragment$SpecialAdapter)]

java.lang.IllegalStateException: 
The content of the adapter has changed but ListView did not receive a notification. 
Make sure the content of your adapter is not modified from a background thread, 
but only from the UI thread. 
[in ListView(2131362336, class android.widget.ListView) with Adapter(class com.manjay.housebox.slidemenu.SpecialListFragment$SpecialAdapter)]

錯(cuò)誤的大體意思是:你的adapter的內(nèi)容變化了,但是你的ListView并不知情。請(qǐng)保證你adapter的數(shù)據(jù)在主線程中進(jìn)行更改!

解決方法:

1、檢查Thread,確定沒有在Background thread中直接調(diào)用adapter,如果有,請(qǐng)移除相關(guān)代碼到Handler中處理;

2、盡量將數(shù)據(jù)放在adapter類中管理,不需要的時(shí)候清除信息(勤寫clear()),及時(shí)用notifyDataSetChanged()刷新;

3、在Activity或者Fragment合適的位置(onPause/onStop)要及時(shí)檢查thread,有adapter數(shù)據(jù)處理相關(guān)的應(yīng)馬上停止;

4、這個(gè)錯(cuò)誤經(jīng)常出現(xiàn)在Activity休眠起來之后,主要還是使用adapter不太小心造成的。如果實(shí)在找不到原因,在onPause()函數(shù)中停止所有的background thread,并且在onResume()函數(shù)最前面清空adapter中的數(shù)據(jù),并且adapter.notifyDataSetChanged()。然后重新更新加載數(shù)據(jù),這樣一般可以解決問題。

經(jīng)過嘗試,問題最終通過第二種方法解決了。

實(shí)現(xiàn)方法如下:

    class SpecialAdapter extends BaseAdapter
    {
        //將數(shù)據(jù)集合轉(zhuǎn)移到適配器里
        private ArrayList<SpecialInfo> dataList;
        
        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            if (convertView == null)
            {
                LayoutInflater inflater = getActivity().getLayoutInflater();
                convertView = inflater.inflate(R.layout.speciallist_item, null);
            }
            
            ImageView iv_main = ViewHolder.get(convertView, R.id.speciallist_item_p_w_picpath);
            TextView tv_title = ViewHolder.get(convertView, R.id.speciallist_item_title);
            
            SpecialInfo data = dataList.get(position);
            if (position == 0)
            {
                layoutView.setVisibility(View.GONE);
            }
            else
            {
                layoutView.setVisibility(View.VISIBLE);
            }
            
            Bitmap bm = BitmapFactory.decodeResource(getActivity().getResources(), data.icon);
            iv_main.setImageBitmap(bm);
            tv_title.setText(data.title);

            return convertView;
        }
        
        @Override
        public int getCount()
        {
            return dataList == null ? 0 : dataList.size();
        }
        
        @Override
        public Object getItem(int position)
        {
            return null;
        }
        
        @Override
        public long getItemId(int position)
        {
            return 0;
        }
        
        //更新數(shù)據(jù)
        public void setDataList(ArrayList<SpecialInfo> list)
        {
            if (list != null)
            {
                dataList = (ArrayList<SpecialInfo>) list.clone();
                notifyDataSetChanged();
            }
        }
        
        //釋放數(shù)據(jù)
        public void clearDataList()
        {
            if (dataList != null)
            {
                dataList.clear();
            }
            notifyDataSetChanged();
        }
        
    }

注:

1.將所有數(shù)據(jù)“完全”保存在adapter內(nèi)部,即使有外部數(shù)據(jù)進(jìn)入,也會(huì)用.clone()重新生成副本,保證了數(shù)據(jù)完全是由adapter維護(hù)的。

2.保證所有setDeviceList()/clearDeviceList()是從主線程里調(diào)用的。

參考資料:http://blog.csdn.net/ueryueryuery/article/details/20607845

3.android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

問題所在:UI操作不能在子線程(非UI線程)操作.

4.使用proguardgui混淆器對(duì)jar包進(jìn)行混淆,出現(xiàn)EXCEPTION FROM SIMULATION錯(cuò)誤:

詳見:Android項(xiàng)目:proguard混淆之常見問題及解決方法匯總

5.so文件所在目錄問題

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load amapv301 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.manjay.housebox-1.apk,libraryPath=/data/app-lib/com.manjay.housebox-1]: findLibrary returned null

錯(cuò)誤詳情:

Android筆記:常見錯(cuò)誤問題及解決方法匯總

解決方法:

報(bào)錯(cuò)的是紅色框的so文件,將紅色框的so文件復(fù)制一份到藍(lán)色框目錄里,或者新建armeabi-v7a目錄并將so文件復(fù)制進(jìn)去。

Android筆記:常見錯(cuò)誤問題及解決方法匯總

6.加載fragment時(shí)報(bào)錯(cuò):IllegalStateException: Can not perform this action after onSaveInstanceState

是在使用FragmentTransition的 commit方法添加一個(gè)Fragment的時(shí)候出現(xiàn)的。commit方法是在Activity的onSaveInstanceState()之后調(diào)用的,這樣會(huì)出錯(cuò),因?yàn)閛nSaveInstanceState方法是在該Activity即將被銷毀前調(diào)用,來保存Activity數(shù)據(jù)的,如果在保存玩狀態(tài)后再給它添加Fragment就會(huì)出錯(cuò)。解決辦法就是把commit()方法替換成 commitAllowingStateLoss()就行了,其效果是一樣的。

7.Export的時(shí)候遇到xxx is not translated in yyy, zzz的問題。

例如說"auto_exit" is not translated in zh, zh_CN.

這是因?yàn)锳ndroid SDK Tool 將 ANDROID_LINT_COMPLETE_REGIONS 改為了需要檢查。

臨時(shí)解決方法:

Eclipse > Preference > Android > Lint Error Checking的Correctness: Messages > MissingTranslate

將 Severity 從 Fetal 改為 Warming

8.android FAILED Binder Transaction 問題

  Intent傳輸?shù)腷ytes不能超過40k。優(yōu)其在Intent 中傳遞圖片時(shí),要限制圖片小 40K.

參考資料:

1.http://blog.csdn.net/glony/article/details/7596430

2.http://stackoverflow.com/questions/3528735/failed-binder-transaction

9.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 157.

 使用Gson解析時(shí)出現(xiàn)的問題,問題緣由是被解析的對(duì)象類的屬性類型錯(cuò)誤所致。

 比如數(shù)組(JSONArray)類型的屬性,寫法應(yīng)該是:List<類型> 屬性名;

10.Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

很多人使用startActivity時(shí)候,會(huì)碰到如下異常:

Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

原因:Context中有一個(gè)startActivity方法,Activity繼承自Context,重載了startActivity方法。如果使用Activity的startActivity方法,不會(huì)有任何限制,而如果使用Context的startActivity方法的話,就需要開啟一個(gè)新的task,遇到上面那個(gè)異常的,都是因?yàn)槭褂昧薈ontext的startActivity方法。

解決辦法:加一個(gè)flag。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

這樣就可以再新的task里面啟動(dòng)這個(gè)Activity了。

注:

1.混淆相關(guān)的問題處理轉(zhuǎn)至:Android項(xiàng)目:proguard混淆之常見問題及解決方法匯總

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:Android筆記:常見錯(cuò)誤問題及解決方法匯總-創(chuàng)新互聯(lián)
文章來源:http://www.rwnh.cn/article34/dhhise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃小程序開發(fā)、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(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)

成都網(wǎng)頁設(shè)計(jì)公司
宜春市| 哈巴河县| 大同市| 旅游| 平乡县| 松江区| 桃源县| 寿光市| 疏勒县| 拜城县| 岗巴县| 乐平市| 游戏| 子洲县| 安平县| 讷河市| 平武县| 镇沅| 如东县| 石嘴山市| 扎兰屯市| 嘉善县| 皋兰县| 日喀则市| 静海县| 广宁县| 建水县| 乌海市| 沈丘县| 彰化市| 肥乡县| 商河县| 平和县| 荥阳市| 甘洛县| 咸阳市| 长宁区| 汉中市| 济南市| 敖汉旗| 娄烦县|