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 に答える