當前位置:首頁 » 安卓系統 » androidservice網路

androidservice網路

發布時間: 2023-12-06 19:48:37

『壹』 請教android service ANR問題

ANR: 很多初入Android開發的網友可能發現ANR的字樣,到底Android ANR是什麼呢? 其實ANR就是Application Not Responding的全稱,當某個應用處於長期假死狀態時Android系統會彈出一個窗口上面寫道,XXX is not responding給出兩個按鈕一個為force close一個為wait。 可能觸發ANR的情況 1. 長時間的I/O處理,比如讀寫大文件,網路訪問時造成的阻塞。 2. 執行耗時的運算,Android默認為超過5000ms即5秒開始彈出ANR窗口,某些應用可能首次執行時沒有緩存十分耗時,可以通過Splash播放閃屏Logo等方式來延緩載入 3. Service和appWidget中也要注意多線程的使用,除非它和Activity工作在不同的進程。 避免ANR的方法 1. 單獨開工作者線程,通過獨立的Thread或使用類似AsyncTask的方式來處理耗時的內容。 2. 耗時的操作盡量分段處理,使用類似狀態機的方法,類似Symbian的活動對象將一個復雜的事情,分段執行。 3. UI線程中不要處理過多的內容,比如將一個5MB的文本,讓TextView去setText,要知道這種UI操作,沒有什麼好方法去解決的,所以Android123提示,遇到UI中需要執行復雜的操作,可以參考上面2提到的分段處理方式。

『貳』 Android如何獲取網路連接狀態及怎樣調用網路配置界面

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetManager {
Context context;

public NetManager(Context context) {
this.context = context;
}

// 判斷網路是否可用的方法
public boolean isOpenNetwork() {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
return false;
}

// 判斷WIFI網路是否可用的方法
public boolean isOpenWifi() {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifi.isConnected();
}
}

public static void netManager(final Context a) {
netManager = new NetManager(a);

if (!netManager.isOpenNetwork()) {
// 如果網路不可用,則彈出對話框,對網路進行設置
Builder builder = new Builder(a);
builder.setTitle("沒有可用的網路");
builder.setMessage("是否對網路進行設置?");
builder.setPositiveButton("確定",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
try {

String sdkVersion = android.os.Build.VERSION.SDK;
if (Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
a.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.setNegativeButton("取消",
null);
builder.show();
}else {
Toast.makeText(a, "網路不給力,請確認您的網路連接", Toast.LENGTH_LONG).show();
}
}
轉載,僅供參考。

『叄』 Android將所有網路請求及邏輯都放在Service中處理是否合適

不太合適,所有的都寫在一個地方,顯得代碼臃腫,不好維護,最好分層():網路請求只負責請求數據(c),對於數據處理的邏輯判斷,放到邏輯層(m),然後,對於頁面展示的放到activity裡面刷新視圖即可,這里只負責接收數據後刷新界面,不做任何判斷邏輯(v)。。。相當於mvc模式。

熱點內容
電腦怎麼登遠程伺服器 發布:2024-11-29 12:32:20 瀏覽:124
先來先服務進程調度演算法 發布:2024-11-29 12:30:12 瀏覽:628
mysql存儲過程循環表中的數據 發布:2024-11-29 12:04:02 瀏覽:600
相機存儲器一般是什麼 發布:2024-11-29 11:59:51 瀏覽:295
傳奇伺服器源碼 發布:2024-11-29 11:43:15 瀏覽:820
新手機如何登錄微信密碼忘記了 發布:2024-11-29 11:34:34 瀏覽:544
筆記本配置低怎麼玩lol 發布:2024-11-29 11:34:32 瀏覽:461
如何在iphone上玩安卓號 發布:2024-11-29 11:24:21 瀏覽:754
伺服器店鋪怎麼取名 發布:2024-11-29 11:19:26 瀏覽:4
phpapache日誌 發布:2024-11-29 11:07:26 瀏覽:310