1
從那時起,我就想到了各個方向。但是,我沒有關於構建我的Android應用程序的最佳方式的想法。通過服務更新和通知JSON獲取請求的最佳方式
概念
我的申請獲得通過OkHttp3 JSON數組列表。響應之後,應用程序將該列表放在適配器的列表視圖中。我希望列表中的每個新項目都能通知我的用戶。我想在後臺編寫一個服務來通知我的用戶,即使應用程序不在了。
我需要一個服務,以保持通知的通量(如Facebook,Twitter)。
這是問題所在。那麼,如何正確地做到這一點?
我的物品類別
public class ItemDevis implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String description;
private String picture;
private int price;
private int number;
private int millesime;
private int color;
private int status;
public ItemDevis(int id, String name, String description,
int number, int millesime, int color, int status, int price) {
this.id = id;
this.name = name;
this.millesime = millesime;
this.color = color;
this.description = description;
this.status = status;
this.number = number;
this.price = price;
}
}
我的服務
public class NotifyService extends Service {
private NotificationManager mNM;
private int NOTIFICATION = R.string.notification;
private boolean isRunning = false;
static final int timer = 5000;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
if (!isRunning) {
mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
}
@Override
public void onDestroy() {
mNM.cancel(NOTIFICATION);
isRunning = false;
Toast.makeText(this, "Service done", Toast.LENGTH_SHORT).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!isRunning) {
isRunning = true;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("DATA", "HTTP Request!");
// Check, if new item -> update view (if application is ready) + notify.
handler.postDelayed(this, timer);
}
}, timer);
}
return START_STICKY;
}
}
你喜歡這種解決辦法?
我的問題
- 我應該使用一個SQLite?
- 我應該使用ContentProvider嗎?
- SQLite在這種情況下效率更高嗎?
- 我應該檢查我的模式嗎?
感謝您的幫助。
你怎麼會不存在內容提供商和點N°1提及?您是如何在沒有內容提供商的情況下在服務和應用程序之間發送數據的?你能解釋關於解決方案1的更多細節嗎?不同解決方案之間的優缺點。 – Initerworker
僅存儲來自服務的sqlite數據和來自sqlite的活動獲取數據。所以你不需要內容提供商 – Deepak
但是,我讀這種方法有更多的延遲。因爲從sqlite獲取數據比獲取內容提供者更慢,對嗎?謝謝你的幫助人。 – Initerworker