1. android 資料庫操作可以放在子線程裡面嗎
mysql是免費資料庫,市場普及率非常高,而新建資料庫就得一切從0來,收費還是不收費?編個新資料庫技術並不難,難在資料庫標准化機構是美國的,美國大嘴一張,整個資料庫就得重改這裡面的維護預算誰給出?
2. eclipse開發androidapp怎麼連接oracle資料庫
不能與資料庫連接的
Android客戶端不能直接與伺服器資料庫連接。資料庫是需要非常大的內存,安裝之後有好幾G,連接資料庫要有一個像SQLServer里的webservice,這樣的一個橋梁來衫鬧間接訪問。就是在伺服器運行一個服務端程序,該服務端程序通過接收來自android客戶端的指令顫掘,對資料庫進行操作。
客戶端的http請求茄塌核可以通過HttpClient類實現,在anddroid4.0之後,客戶端的網路請求已經不被允許在主線程中運行,所以還需注意另開啟一個子線程進行網路請求。
3. Android中進程與線程及如何在子線程中操作U
一個Android 程序默認情況只有一個進程,但是一個進程可以有多個線程。其中有一個UI 線程也稱為UI主線程,UI Thread在Android程序運行的時候就被創建,主要是負責控制UI界面的顯示、更新和控制項交互。所有的Android應用程序組件----包括Activity、Service、Broadcast Receiver都在應用程序的主線程中運行。因此,任何組件中的費時操作處理都可能阻塞所有其他的組件、包括Service和可見的Activity。
在Android 中,對未響應的定義是:Activity對一個輸入事件在5s內沒有響應,或者Broadcast Receiver在10s內沒有完成他的onReceive處理程序。對於任何不用直接和用戶界面進行交互的重要處理,使用後台線程技術處理是非常重要的,將文件操作、網路交互、資料庫、復雜計算調度到後台線程中完成非常重要,以免阻塞主線程。
方法一:Thread+Handler
開啟一個新線程:new Thread(new MyThread()).start();
//通過Handler物件,通知主線程UI Thread來更新界面
Handler myHandler=new Handler(){
//此方法主要用於更新UI
public void handleMessage(Message msg){
switch(msg.what){
//根據Thread返回的標識進行相應的處理
}
}
};
class MyThread implements Runnable{
public void run(){
int what=0;
//將耗時操作放到這里處理
//to-do
4. android在手機本地資料庫讀取數據屬於耗時操作嗎,用啟動新線程嗎
資料庫操作
建議不要寫在UI里線程里,尤其是當數據量比較大時,這樣比較容易引起ANR。所以建議啟動新的線程里來處理資料庫操作。
5. android操作sqlite資料庫需要new一個新thread嗎
不需要,如果sqlite查詢很耗時的話可以使用thread非同步查詢。
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
Android 提供了 SQLiteOpenHelper 創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實現三個方法:
1 構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2 onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3 onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
6. Android 查詢資料庫採用ORM數據框架,是否還需要開啟線程非同步處理
直接引入的api就是非同步的吧,不需要單獨處理了。
7. android sqlitedatabase 的操作是同步線程安全的嗎
是的,默認的情況下,你可以把insert,update這些函數看作原子操作。可以參考這一篇
網頁鏈接
但是你需要注意,你不能多次調用close函數,否則會產生異常。
8. Android 如何解決資料庫多線程鎖的問題
多線程是很容易造成死鎖,一般情況下死鎖都是因為並發操作引起的。我不懂JAVA,但死鎖這個問題每種開發工具和資料庫都會碰到.解決辦法是:
1、程序方面優化演算法(如有序資源分配法、銀行演算法等),在一個程序里,能不用多線程更新同一張資料庫表 盡量不要用,如果要用,其避免死鎖的演算法就很復雜。
2、資料庫方面設置等待超時時間
3、發生死鎖後直接KILL掉資料庫進程