Question

Dans mon code, je commence Timertask lors du message de diffusion reçue. Ici, j'ai affiché le code de deux classes. 1. Récepteur de diffusion. 2. Analyse XML.

Ma question est quand j'appelle Timemertask, à l'appel de temporisation de temps planifié et que je reçois toutes les données dans la classe XML.like "mserviceliste".Mais quand je veux utiliser ce tableau à chaque fois qu'il devient nul.

Je ne sais pas où je fais mal.

Si un corps a une idée, alors c'est génial.

public class MyWidgetIntentReceiver extends BroadcastReceiver {
public static int clickCount = 0;
private String msg[] = null;
private ParsingXML myXMLHandler;
private ArrayList<Stream> mServiceList = new ArrayList<Stream>();
private UrlTimerTask mUrlTimerTask = null;
private Timer mTimer = null;
private String rssFeed = "https;??.....";

@Override
public void onReceive(Context context, Intent intent) {


        mUrlTimerTask = new UrlTimerTask();
        mTimer = new Timer();

        mTimer.scheduleAtFixedRate(mUrlTimerTask, 0, 120000); // (60*2*1000)

        if (intent.getAction().equals(WidgetUtils.WIDGET_UPDATE_ACTION1)) {

        Toast.makeText(context, "NEXT!!", Toast.LENGTH_SHORT).show();
        updatePreviousWidgetListener(context);
    }
}

private void updatePreviousWidgetListener(Context context) {
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
            R.layout.widget_layout);

    // updating view
    remoteViews.setTextViewText(R.id.title, getNextTitle(context));
    remoteViews.setTextViewText(R.id.desc, getDesc(context));

    // re-registering for click listener
    remoteViews.setOnClickPendingIntent(R.id.sync_button,
            MyWidgetProvider.buildButtonPendingIntent(context));

    // re-registering for click listener
    remoteViews.setOnClickPendingIntent(R.id.next,
            MyWidgetProvider.buildNextButtonPendingIntent(context));

    MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(),
            remoteViews);
}

private String getDesc(Context context) {

    // some static jokes from xml
    msg = context.getResources().getStringArray(R.array.news_headlines);
    if (clickCount >= msg.length) {
        clickCount = 0;
    }
    return msg[clickCount];
}

private String getNextTitle(Context context) {

    if (mServiceList != null && mServiceList.size() > 0) {
     return mServiceList.get(clickCount).getTitle().toString();
    } else {
     mStreamList = myXMLHandler.getItemsList();
     Toast.makeText(context, "no data found", Toast.LENGTH_SHORT).show();
    return "no data";
    }
}

private class UrlTimerTask extends TimerTask {

    @Override
    public void run() {

        try {

            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();

            myXMLHandler = new ParsingXML();
            xr.setContentHandler(myXMLHandler);

            URL _url = new URL(rssFeed);

            xr.parse(new InputSource(_url.openStream()));
            mServiceList = myXMLHandler.getItemsList();

            if (!mServiceList.isEmpty()) {
                for (int i = 0; i < mServiceList.size(); i++) {
                    Log.d(TAG, mServiceList.get(i).getTitle());

                }
            }
        } catch (ParserConfigurationException pce) {
            Log.e("SAX XML", "sax parse error", pce);
        } catch (SAXException se) {
            Log.e("SAX XML", "sax error", se);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Vous avez toujours une question concernant pour comprendre ma question, dites-moi que je ferai de mon mieux pour comprendre ma question. Parce que je veux répondre.

Remarque courte: je souhaite utiliser des données d'analyse dans la classe de récepteur de diffusion.

Merci,

Était-ce utile?

La solution

Je ne pouvais pas comprendre, dans votre radiodiffusette onReceive(Context context, Intent intent) , vous avez appelé updatePreviousWidgetListener(context); cette méthode. Mais le reste de votre code ne montre aucun appel à cette méthode.

Si je ne me trompe pas, vous avez appelé la mauvaise méthode dans onReceive(Context context, Intent intent). Quand updatePreviousWidgetListener(context); vous appelez?

Corrigez-moi si je me trompe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top