Android 開發過程中碰到的小坑集合
- registerReceiver 和 unregisterReceiver 要同一個 mReceiver物件才行,否則會出現”Caused by: java.lang.IllegalArgumentException: Receiver not registered”錯誤。但是!即便是同一個 mReceiver也極容易犯這個錯誤,原因是mReceiver被多次unregisterReceiver,導致這個錯誤。解決辦法,設定一個全域性變數標記mReceiver是否被register過。
- 在SplashActivity或者LoginActivity跳轉到MainActivity之間,由於MainActivity是由一個ViewPager載入5個Fragment,每個Fragment載入了大量資料,因此整個MainActivity耗時過長,導致中間會有明顯的停頓,即SplashActivity或者LoginActivity好像在那裡卡住了,對於使用者來說,感覺像app沒有相應了一樣。所以,儘量在被跳轉的Activity中少做耗時操作。
- 對靜態成員變數初始化了,如下圖,若後面改變了Config.TEMP_UNIT,那麼MIN_YAXIS_TEMP是不會跟著變的,需要重新賦值一次。
public static float MIN_YAXIS_TEMP = getTemp(32);
public static float getTemp(float temp){
if(Config.TEMP_UNIT.equals("ºC"))
return temp;
else
return (float) (1.8 * temp + 32);
}
4.. 當在Activity中覆蓋了 onCreateOptionsMenu 和 onOptionsItemSelected 方法,你會發現 對於此Activity 來說,getSupportActionBar().setDisplayHomeAsUpEnabled(true); 和在 Manifest.xml 中設定如下時,返回鍵點選無反應!
<activity android:name=".MainActivity"
android:parentActivityName=".ChooseHardwareActivity"/>
解決辦法如下:
// 返回鍵的 id 為 android.R.id.home
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()){
case android.R.id.home:
finish();
break;
}
return true;
}
5.. 最好使用AppCompatActivity,不要使用Activity,否則後期定製會出現各種各樣的麻煩坑。
6.. 用soundPool來播放音樂時,load不能太大的音訊檔案,否則載入會失敗。其二是播放應該在load成功的回調了,而不是load後接著執行。
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
int loadId = soundPool.load(this.activity, R.raw.alarm, 1);
AppLog.i("loadId = " + loadId);
// id, 左聲道音量, 右聲道音量, 優先順序, 是否迴圈(0: 不迴圈, -1: 迴圈), 播放比率
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
AppLog.i("onLoadComplete sampleId = " + sampleId + ", status = " + status);
int streamId = soundPool.play(sampleId, 1, 1, 0, -1, 1);
alarming = true;
if(ALARM_COUNT == 3){
ALARM_COUNT = 1;
}else if(ALARM_COUNT == 1){
ALARM_DURATION = ALARM_ONE_MIN;
ALARM_COUNT ++;
stopAlarm(streamId);
}else if(ALARM_COUNT == 2){
ALARM_DURATION = 3 * ALARM_ONE_MIN;
ALARM_COUNT ++;
stopAlarm(streamId);
}
showAlarmDialog(streamId);
}
});
private void stopAlarm(final int streamId){
activity.mHandler.postDelayed(new Runnable() {
@Override
public void run() {
soundPool.stop(streamId);
alarming = false;
}
}, ALARM_DURATION);
}
private void showAlarmDialog(final int streamId){
AlertDialog.Builder builder = new AlertDialog.Builder(this.activity);
builder.setTitle(BleApplication.getInstance().getResources().getString(R.string.alarm));
builder.setMessage(BleApplication.getInstance().getResources().getString(R.string.temp_exceed_threshold));
builder.setPositiveButton(BleApplication.getInstance().getResources().getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if(alarming) soundPool.stop(streamId);
}});
builder.create().show();
}
相關推薦
Android 開發過程中碰到的小坑集合
registerReceiver 和 unregisterReceiver 要同一個 mReceiver物件才行,否則會出現”Caused by: java.lang.IllegalArgumentException: Receiver not registe
Android開發過程中的坑及解決方法收錄(四)
1.某個控制元件要放在Linearlayout佈局的底部(底部導航條) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.
Android開發過程中的坑及解決方法收錄
1.某個控制元件要放在Linearlayout佈局的底部(底部導航條) <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layou
Android Studio開發過程中的小插曲(Wifi熱點開發遇到的問題與解決)
今天我參照《Android程式設計經典教程》進行wifi熱點開發。身為菜雞的我依然遇到了一些問題。 上一張截圖吧,免得大家不知道我說的問題在哪裡。 第一個問題: mainactivity.java中,我寫在wifiAdmin中的部分內容到了這裡又不能被識別了。 如
微信小程式 開發過程中遇到的坑(一)
1.我們使用app.json檔案來對微信小程式進行全域性配置,決定頁面檔案的路徑、視窗表現、設定網路超時時間、設定多 tab 的時候在pages中寫註釋的時候回報錯。 例如: { "pages":[ //這是首頁面 "pages/
Android開發過程中的坑及解決方法收錄(五)
版本號 如果 出現 過程 androi 分享圖片 onf blog end 1. 導入依賴庫出現錯誤 因為使用的sdk版本不同,使用下列代碼強制使用最低版本,25.3.1就是我當前使用的版本號,根據自己的情況修改 configurations.all {
使用phxpaxos開發過程中遇到的坑
例如 exec 永遠 傳輸 snap 如果 poi 沒有 github 1. 開啟BatchPropose後,狀態機使用ExecuteForCheckpoint生成快照要註意: ExecuteForCheckpoint中的InstanceID不能立即持久化。 例如:
android開發過程中一些遇到的問題
記錄android開發過程中遇到的問題。 1.在一個xml中能否使用同一個include多次 http://www.apkbus.com/android-104152-1-1.html android中include標籤的使用 http://
android 開發過程中涉及到的清除快取操作
android 開發過程中會遇到很多快取,常常使人摸不清楚,這裡總結一下,希望下次遇到快取相關問題能有所幫助。 Clean Project 點選 Clean Project 會執行 clean、:
Android 開發過程中遇到的問題Error:Execution failed for task ':app:processDebugManifest'
在開發過程中遇到了這樣一個問題: 問題1: Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multiple errors, see l
Selenium:學習過程中遇到的坑集合
在學習過程中,遇到已下問題 問題一: ChromeDriver error “unknown error: cannot get automation extension” 我用的chrome是70以上的版本,使用之前的chromedriver.exe時,報如上
微信公眾號開發過程中遇到的坑
小白進行微信公眾號開發有半年,遇到了許多坑,android和IOS的相容性的時代性問題,還要微信瀏覽器的不友善;慢慢跟後續會加,有遇到的同行可以補充;以下; 1.點選事件失效 點選事件失效是最快遇到的問題,這個在android上沒有出現過問題,一般在IOS上面,尤
android.intent.action.SCREEN_ON和android.intent.action.SCREEN_OFF待機廣播在TV android開發過程中,不響應原因.
待機廣播,又叫螢幕喚醒廣播:android.intent.action.SCREEN_ON和android.intent.action.SCREEN_OFF 在使用過程中需要主要以下兩點: 1.需要在AndroidManifest.xml添如下許可權: <uses
Android 開發過程中平時遇到的一些問題及總結
相信大家都有面試的經歷,相對比面試官的問的一些問題其實都是基礎的知識,但就是一些基礎的知識我們也不是很完美的回答出來,我們也知道現在的開發人員很多,一家公司一個崗位就會有很多的開發者投遞,在那麼多開發者中你如何讓面試官很深的認識你,給面試官一個很深的印象,能讓他
Android tips(十三)-->Android開發過程中使用Lambda表示式
新的Java8 API中提供了不少新的特性,其中就有Lambda表示式。而本文我們將主要介紹一下在Android開發過程中如何使用Lambda表示式,這裡主要是為我們後續介紹RxAndroid、RxJava相關知識做鋪墊的。 Lambda表示式的概念
Android 開發過程中的異常奔潰處理
開發過程中捕獲異常並定位問題解決問題是基本之一,當然也有很多第三方的平臺,比如接入友盟統計、第三方加固(比如360加固等)、騰訊Bugly等都會為我們收集到異常日誌。但是,我個人認為開發及測試過程中編寫一個Crash收集工具類尤為重要。下面分享一下我的crash處理。直接上程
記錄的Android開發過程中遇到的問題。
01-20 04:05:16.637:E / AndroidRuntime(1372):程序:com.jetsun.hbfc:webview,PID:1372 01-20 04:05:16.637:E / AndroidRuntime(1372):java.lang.RuntimeException :無法例
年度鉅獻-WPF專案開發過程中WPF小知識點彙總(原創+摘抄)
用了三年多的WPF,開發了很多個WPF的專案,就我自己的經驗,談一談如何學好WPF,當然,拋磚引玉,如果您有什麼建議也希望不吝賜教。 WPF,全名是Windows Presentation Foundation,是微軟在.net3.0 WinFX中提出的。WPF是對Direct3D的託管封裝,它
Android開發過程中可能遇到的問題
一、匯入專案時,提示 “invalid project description” 無效的專案描述,應該與ADT版本不同有關。 出錯背景:外來原始碼放在工作區,然後匯入Eclipse。 解決方法:外來原始碼先放在非工作區(如:桌面),然後匯入到Eclipse,匯入頁面
android開發過程中解決bug的方法
1、判斷手機型號 2、判斷手機版本號 1、解決魅藍3手機軟鍵盤不能頂上去佈局的問題 if (Build.MODEL.equals(“m3”)){ Log.i(“LHD”,”connect魅族3手機”);