在后台检查新的聊天消息,Android

时间:2017-08-31 17:39:05

标签: android service push-notification

我正在开发一个应用程序,当客户端每隔4.5秒检查服务器是否响应“OK”时。

它甚至可以正常工作,但如果我打开/关闭互联网,有时它会停止工作,它会不一致,我需要准确地检查消息。

服务停止就像我给出的示例一样,并且在指定的秒数范围(4.5)

之外重新运行

我正在开发聊天,我需要知道这一点,我需要专业。

Start.java

public class Start extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_start);

    Intent serviceIntent = new Intent(getBaseContext(), BackExec.class);
    getBaseContext().startService(serviceIntent);
}

@Override
protected void onResume()
{
    super.onResume();
    Intent serviceIntent = new Intent(getApplicationContext(), BackExec.class);
    startService(serviceIntent);
}}

BackExec.java

public class BackExec extends Service {

static Timer t;

public IBinder onBind(Intent arg0) {
    return null;
}
@Override
public void onCreate() {
    super.onCreate();
    t =  new Timer();
    t.schedule(new TimerTask() {
        @Override
        public void run() {
            String r = getData();
            if(r != null){
                if(r.equals("OK")){
                    NotificationCompat.Builder b = new NotificationCompat.Builder(getApplicationContext());
                    b.setSmallIcon(R.drawable.ic_ex);
                    b.setContentText("YOU HAVE NOTIFICATONS, CLICK.");
                    b.setContentTitle("TITLE APP:");
                    b.setOngoing(false);
                    b.setPriority(Notification.PRIORITY_MAX); //TALVEZ FUNCIONE

                    NotificationManager m = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
                    m.notify(0, b.build());
                }

            }
        }
    }, 1, 4500);
}

public int onStartCommand(Intent intent, int flags, int startId) {
    t =  new Timer();
    t.schedule(new TimerTask() {
        @Override
        public void run() {
            String r = getData();
            if(r != null){
                if(r.equals("OK")){
                    NotificationCompat.Builder b = new NotificationCompat.Builder(getApplicationContext());
                    b.setSmallIcon(R.drawable.ic_ex);
                    b.setContentText("YOU HAVE NOTIFICATONS, CLICK.");
                    b.setContentTitle("TITLE APP:");
                    b.setOngoing(false);
                    b.setPriority(Notification.PRIORITY_MAX); //TALVEZ FUNCIONE

                    NotificationManager m = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
                    m.notify(0, b.build());
                }

            }
        }
    }, 1, 4500);

    return START_STICKY;
}

public static String getData(){
    URL site = null;
    try {
        site = new URL("http://192.168.0.10:8080/example/server.php");
        URLConnection urlConn = site.openConnection();

        urlConn.setRequestProperty("Cookie", CookieManager.getInstance().getCookie("http://192.168.0.10:8080/example"));
        urlConn.setDoOutput(true);
        PrintStream enviarInfos = new PrintStream(urlConn.getOutputStream());

        enviarInfos.print("pac=pac");
        urlConn.getInputStream();

        BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
        String inputLine;
        String out = "";

        while ((inputLine = in.readLine()) != null)
        out = out + inputLine;
        in.close();
        return out;
    } catch (MalformedURLException e) {
        return null;
    } catch (IOException e) {
        return null;
    }
}

public void onStart(Intent intent, int startId) { } // TO DO
public IBinder onUnBind(Intent arg0) {
    return null;
}
public void onStop() {}
public void onPause() {}
@Override
public void onDestroy() {}
@Override
public void onLowMemory() {} }

0 个答案:

没有答案