簡體   English   中英

每30秒更新一次訂單狀態

[英]Updating order status every 30 seconds

我正在使用Track order屏幕。 用戶下訂單后,管理員會將訂單狀態更改為“ 待處理”中的“已 接受” 我想在Track Order屏幕上實時顯示訂單狀態。 每當管理員在后端更改時,都應更改狀態。

這是單擊跟蹤訂單按鈕的初始屏幕。 http://imgur.com/a/5NCFH

當用戶選擇下拉菜單時,將顯示基於用戶的所有訂單。 http://imgur.com/a/PiKf1

選擇特定訂單http://imgur.com/a/AdxLO后,這是跟蹤訂單屏幕。 根據圖像,一旦在后端將其更改為輸出,實時我想指出要排序以便交付。

這是我的跟蹤訂單活動。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    try
    {
        getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
        setHasOptionsMenu(true);
    }
    catch(Exception ex) {
        ex.getMessage();
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    final View view = inflater.inflate(R.layout.fragment_track_order, container, false);
    try
    {
        mView = view;

        getOrders(); // It gives me all the orders on clicking spinner

    }
    catch(Exception ex)
    {
        GSLogger.e(ex);
        showToast(getString(R.string.error_loading_fragments));
    }

    return view;

}


private void init_AppContents(final ArrayList<TrackOrderModel> ordersList)
{
    try
    {

        final ArrayList<String> order_arr = new ArrayList<>();
        for(TrackOrderModel trackOrderModel : ordersList)
        {
            order_arr.add(trackOrderModel.getRestaurant_name()+"  "+trackOrderModel.getData_time());
        }

        final SpinnerAdapter area_arrayAdapter = new SpinnerAdapter(getActivity(),
                android.R.layout.simple_spinner_dropdown_item, order_arr);
        order_spinner.setAdapter(area_arrayAdapter);
        order_spinner.setSelection(0);

        order_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3)
            {
                order_id = ordersList.get(position).getOrder_id();
                tran_id = ordersList.get(position).getOrder_id();


                if(!order_id.equals("0"))

                    getOrderStatus(order_id); // Based on the order id, it displays particular order status. Here I want it to change every 30 seconds.
                else
                {
                    order_received_circle.setImageResource(R.mipmap.circle_grey);

                    order_ready_progress.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.light_grey_2));
                    order_ready_circle.setImageResource(R.mipmap.circle_grey);

                    order_deliver_progress.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.light_grey_2));
                    order_deliver_circle.setImageResource(R.mipmap.circle_grey);
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

    }
    catch(Exception ex)
    {
        GSLogger.e(ex);
        showToast(getString(R.string.error_init_content));
    }
}

幫助將不勝感激。

您可以使用Firebase雲消息傳遞,使用計時器輪詢服務器的結果不是一個好方法,因為它不是高效的方式。 使用FCM,當后端服務器更新數據並觸發有關數據的通知時,您將能夠接收通知(可用於實際用戶通知或僅接收有效負載)。 這是一種有效的方式,因為它由Google管理,具有更好的實施

閱讀此文檔。 https://firebase.google.com/docs/cloud-messaging/

您可以使用廣播接收器檢查訂單狀態並在訂單狀態更改時向用戶顯示通知,另一種方法是使用Runnable線程或Timer()每30秒發送一次請求並檢查訂單狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM