[英]Messaging: If there is not connection, send message when recover it
我已經為Android創建了一個即時消息應用程序。 但是現在我想添加一些功能:
如果用戶在嘗試發送消息時沒有互聯網連接,則必須在用戶恢復連接時發送該消息。
我想最好的方法是使用廣播接收器。 但我不確定。
編輯:一旦連接失敗,您可以跟蹤所有失敗請求,並設置一個在后台運行的線程,該線程嘗試發送失敗的消息。 假設每10-20秒或更長時間。 如果失敗,線程將進入睡眠狀態。 發送完所有消息后,您關閉線程,只有消息失敗時才啟動新線程。 如果另一條消息失敗,則檢查in Queue。 您還可以使用PriorityQueue以更簡單的方式安排消息
您可以像這樣獲取網絡狀態。
public boolean getInternetState() {
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
return true;
} else {
DialogFragment noInternet = new NoInternetDialog();
noInternet.show(getFragmentManager(), "noInternet");
return false;
}
}
然后,您可以向用戶顯示DialogFragment,這將帶他進入wifi設置或您想要的任何位置。
public class NoInternetDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("No Internet Connection! Please Check your Internet Connection and try Again!")
.setPositiveButton("Open Wi-fi Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
if(getInternetState()) {
// do network request here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.