2017-04-03 8 views
1

私のアプリでは、ユーザーがリクエストをポストしているときには、締め切りを設定する必要もあります。だから期限が到来すると、私はその要求を自動的に削除したいと思う。私はまだ何も試していないが、私が必要とするものに似た何かを見つけることはできない。ユーザー投稿要求は、一般的に締め切り期限が到来すると、バックグラウンドサービスからfirebaseの子を削除する方法はありますか?

post = (Button) myView.findViewById(R.id.post); 
     post.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),android.Manifest.permission.ACCESS_COARSE_LOCATION)) { 
         ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSION_REQUEST_LOCATION); 
        } 
        else { 
         ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSION_REQUEST_LOCATION); 
        } 
       } 
       else { 
        LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); 
        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        try { 
         uloc = hereLocation(location.getLatitude(), location.getLongitude()); 
        } 
        catch (Exception e) { 
         e.printStackTrace(); 
         //Toast.makeText(getActivity(), "NOT FOUND", Toast.LENGTH_SHORT).show(); 
        } 

       } 
       dead = deadline.getText().toString(); 
       r = reqdesc.getText().toString(); 

       if(reqdesc.getText().toString().trim().length()==0){ 
        Toast.makeText(getActivity(), "PLEASE ENTER YOUR REQUEST", Toast.LENGTH_LONG).show(); 
       } 
       else if(click==0 || dl==null){ 
        Toast.makeText(getActivity(), "PLEASE SET THE DEADLINE FOR YOUR REQUEST", Toast.LENGTH_LONG).show(); 
       } 
       else { 
        String date = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime()); 
        writeNewRequest(r, dead, uemail, uid, uname, uprofile, uloc, date); 
        String reqKey = p.getKey().toString(); 
        writeDuplicate(reqKey, r, dead, uemail, uid, uname, uprofile, uloc, date); 
        Intent i = new Intent(getActivity(), RequestConfirm.class); 
        i.putExtra("key", reqKey); 
        startActivity(i); 
        //showNotification(); 
       } 
      } 
     }); 

答えて

0

データベースが自分でそのような時間ベースの機能を実装することができないとき

私は、少なくともコードを紹介します。

あなたは、アクションの2つの可能性のあるコースがあります。

  1. は、要求の期限でリストをロードし、その期限が原因のときの要求を削除し、サーバーのメンテナンスアプリを実行します。たとえば、1秒の時間ループでこれを24時間実行しますが、毎秒dbの締め切りをチェックすることはありません。挿入、削除、更新に反応してリストを管理します。 refを観察すると、それが変わるとあなたに伝えられます)。

  2. 締め切りを過ぎているアイテムを無視するようにクエリをさらにチェック/変更します。たとえば、1日1回、これらのアイテムを削除するハウスキーピングルーチンを実行します。

+0

#1は、後者よりも簡単に聞こえます。しかし、私はそれをどのようにコード化するのか分かりません – exc3m

関連する問題