Android定期检查网站更新(JSOUP)

时间:2015-06-17 12:44:22

标签: java android parsing jsoup

我有一个简单的Android应用程序。我通过使用JSOUP从网站获取HTML元素(来自维基百科的文章数)。按钮点击RefreshBtn()即可显示文章数量,并在文字视图tv1中显示,如下所示:

public class MainActivity extends ActionBarActivity {

    String URL = "https://en.wikipedia.org";
    Element article;
    TextView tv1;
    ProgressDialog mProgressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);   
        tv1 = (TextView)findViewById(R.id.tv1);   
    }

    private class FetchWebsiteData extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            mProgressDialog = new ProgressDialog(MainActivity.this);
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Document doc = Jsoup.connect(URL).userAgent("Mozilla").get();
                article = doc.select("div#articlecount > a").first();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            if(article == null) tv1.setText("null!");
            else tv1.setText(article.text() + " articles found!");
            mProgressDialog.dismiss();
        }
    }

    public void RefreshBtn(View v) {
        new FetchWebsiteData().execute();
    }
...
}

我想定期查看文章计数(例如每2小时一次)。那么也许我可以创建推送通知,如果有变化。做这个的最好方式是什么?我需要一些建议。感谢。

1 个答案:

答案 0 :(得分:0)

最好的方法是使用内部报警管理器。

Alarm Manager Example

另一种方法是实现第二个线程:

new Thread(new Runnable()
  @Override
  public void run()
   {
    try
     {
      while(true)
       {
        Thread.sleep(100000); //milliseconds
        // Do Something
       }
     }
    catch (InterruptedException e)
     {
      e.printStackTrace();
     }
    }
 }).start();
相关问题