Сервис не получает данные из базы android - PullRequest
0 голосов
/ 29 мая 2020

Я новый разработчик приложения. Я пытаюсь использовать сервис в своем приложении для получения уведомлений. Я пытаюсь получить последний идентификатор из базы данных и показать его в всплывающем сообщении, но мой код не работает, я не знаю почему. .

Я так делаю ..

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public void onCreate(){
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent,int flags,int startId){
        Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show();
        run_loop();
        return START_STICKY;
    }

    public void run_loop(){
       final RequestQueue mRequestQueue;
        mRequestQueue = Volley.newRequestQueue(this);
        String url =  "http://0000000/testnet/android_register_login/ShowAllData.php";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("data");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject hit = jsonArray.getJSONObject(0);
                                String idtopic =response  .getString("idtopic");
                                int lastThread=Integer.parseInt(String.valueOf(idtopic));
                                JSONObject jsonObject = null;
                                Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_LONG).show();

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mRequestQueue.add(request);



        Handler handler=new Handler();
        handler.postDelayed(new Runnable(){
            @Override
            public void run() {
                run_loop();
            }
            },20000);

    }





    @Override
    public void onDestroy(){
        Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show();
       super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}


И мой PHP код вот так

<?php
include ("connt.php");

$sql="SELECT * FROM `topic` ORDER BY idtopic DESC";
$result=mysqli_query($con,$sql);

$data=array();
while($row=mysqli_fetch_assoc($result)){
//$data[]=$row;
$data["data"][]=$row;
}


    echo json_encode($data);


    ?>



Я заставляю его работать после того, как пользователь вышел из основного страница

в основном действии


  @Override
    public void onBackPressed() {
        Intent sr =new Intent(MainActivity.this,MyService.class);
        startService(sr);
        Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show();
        finish();
        super.onBackPressed();
    }



Теперь, когда я выхожу из приложения, я вижу, что один сообщается для «Выход» и два для запуска сервера, но после этого ничего не произошло

Также я добавляю его в mainfest

            android:name=".MyService"
            android:enabled="true"
            android:exported="false"></service>

и мою таблицу в db вот так

enter image description here

Также я получаю это из Logcat:

05-29 13:13:52.560 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 903K, 8% free 13690K/14727K, paused 12ms+6ms, total 37ms
05-29 13:13:52.560 2432-2566/com.example.myapplication D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 12ms
05-29 13:13:52.636 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 913K, 8% free 13744K/14791K, paused 12ms+1ms, total 34ms
05-29 13:13:52.636 2432-2566/com.example.myapplication D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 10ms
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err: org.json.JSONException: No value for idtopic
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at org.json.JSONObject.get(JSONObject.java:354)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at org.json.JSONObject.getString(JSONObject.java:510)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at com.example.myapplication.MyService$1.onResponse(MyService.java:48)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at com.example.myapplication.MyService$1.onResponse(MyService.java:41)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at android.os.Handler.handleCallback(Handler.java:615)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at android.os.Looper.loop(Looper.java:137)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:4745)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
05-29 13:13:52.656 2432-2432/com.example.myapplication W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-29 13:13:52.660 2432-2432/com.example.myapplication W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-29 13:13:52.660 2432-2432/com.example.myapplication W/System.err:     at dalvik.system.NativeStart.main(Native Method)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...