Я новый разработчик приложения. Я пытаюсь использовать сервис в своем приложении для получения уведомлений. Я пытаюсь получить последний идентификатор из базы данных и показать его в всплывающем сообщении, но мой код не работает, я не знаю почему. .
Я так делаю ..
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 вот так
Также я получаю это из 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)