应用程序关闭时或后台运行Asyntask代码

时间:2017-01-18 09:21:08

标签: android android-asynctask android-notifications

我有这堂课:

private class ReadRSSTask extends AsyncTask < URL, Integer[], Integer[] > {

    protected Integer[] doInBackground(URL...urls) {
        try {
            feed = RssReader.read(urls[0]);
            rssItems = feed.getRssItems();
            for (RssItem rssItem: rssItems) {
                item = new Item(rssItem.getTitle(), rssItem.getDescription(),
                        rssItem.getPubDate());
                list.add(item);
            }
            ...
        } catch (Exception e) {
            e.printStackTrace();
        }
        size = list.size();
        ...
        return new Integer[]{size,size_};
    }

    protected void onPostExecute(Integer[] result) {
        final int how = (copySize-result[0])*-1;
        final int how_ = (copySize_-result[1])*-1;
        if (how > 0) {
            avvisi.setText(String.valueOf(how));
        }
        if (how_ > 0) {
            eventi.setText(String.valueOf(how_));
        }
    }
}

我希望这个方法即使在应用程序关闭或在后台运行时也会运行并显示通知。 它必须检查应用程序是在后台还是已关闭,并将其称为方法,对吗?

2 个答案:

答案 0 :(得分:0)

当您希望在没有向用户显示Activity的情况下执行某些代码时,您应该使用从Service类派生的类。请注意,Service本身可以使用自己的线程执行。

答案 1 :(得分:0)

您可以在Service类中执行此操作。有一个look

希望它对你有所帮助。