2

一旦我打开我的应用程序,我就开始这一行:

Intent intent = new Intent(this, MyIntentService.class);
        startService(intent);

这是我的 IntentService 类:

public class MyIntentService extends Service {
    SharedPreferences prefs;
    public static String prefName = "SecretFile";
    public static String version = "56";
    public final static int uniqueID = 1394885;



public void onCreate() {
        super.onCreate();
        prefs = this.getSharedPreferences(prefName, MODE_PRIVATE);
        version = prefs.getString("Version", "1");
        System.out.println(version);
        calllsharedprefs();
        new loadSomeStuff().execute();
    }

public class loadSomeStuff extends AsyncTask<String, Integer, String> {

    protected void onPreExecute() {

    }

        @Override
        protected String doInBackground(String... params) {
//starting script
                    JSONObject json = jArray.getJSONObject(i);
                    json.getString("Version");
                    Editor editoi = prefs.edit();
                    editoi.putString("Version", json.getString("Version"));
//finishing script
        }

        protected void onProgressUpdate(Integer... progress) {

        }

        @SuppressWarnings("deprecation")
        protected void onPostExecute(String result) {
            if (prefs.getString("Version", "1").equals(version)) {
            } else {
                System.out.println(prefs.getString("Version", "1"));
                NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                nm.cancel(uniqueID);
                Intent intent = new Intent(MyIntentService.this, Drawer.class);
                PendingIntent pi = PendingIntent.getActivity(
                        MyIntentService.this, 0, intent, 0);
                String body = "New Updates are available!";
                String title = "Price list changed";
                Notification n = new Notification(
                        R.drawable.about, body,
                        System.currentTimeMillis());
                n.setLatestEventInfo(MyIntentService.this, title, body, pi);
                n.defaults = Notification.DEFAULT_ALL;
                nm.notify(uniqueID, n);
                version = prefs.getString("Version", "1");
            }
        }
    }

基本上,我从 phpMyAdmin 中的表中获取版本字段,如果版本代码相同,则不要发送通知,如果它没有发送通知并将其设置为与 phpmyadmin 版本相同,但是当我打开我的应用程序代码启动并向我发送通知,但是当我重新编辑表中的值以将其设置为 9 时,它不起作用,它不会再次发送通知!该怎么办?谢谢 =)

4

1 回答 1

1

loadSomeStuff().execute(); 在 oncreate 中调用 >>。它只会执行一次,然后执行您要求它执行的任何操作。

IntentService每次编辑值时都开始此操作,或者您自己执行此操作Activity。看来您不需要服务,您可以Activity自己显示通知。

于 2013-07-27T15:59:50.153 回答