在android

时间:2016-10-24 11:37:31

标签: android android-asynctask scheduled-tasks alarmmanager scheduledexecutorservice

我正在为学校项目做一个Android应用程序。我在我的主要活动中制作了一个AsyncTask,它从互联网上获取数据。我希望每天23:00执行此操作,以及用户首次安装并打开应用程序时执行此操作。我在网上搜索并尝试过ScheduledExecutorService,AlarmManager和TimerTask但是我遇到了编译我的代码或者应用程序在启动时崩溃的问题。我希望得到一些帮助,让这个工作。非常感谢如何安排我的AsyncTask的一些具体例子。

我当前正在运行AsyncTask时单击按钮,但想要删除按钮并按计划运行任务。

提前谢谢!

public class MainActivity extends AppCompatActivity {
private TextView ViewT;
private TextView ViewR;
private String deg;
private String rainD;

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button1);
    ViewT = (TextView) findViewById(R.id.ViewT);
    ViewR = (TextView) findViewById(R.id.ViewR);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new getData().execute();
            ViewR.setText(rainD);
            ViewT.setText(deg);
        }
    });


}
 public class getData extends AsyncTask<Void, Void, Void> {


    @Override
    protected Void doInBackground(Void... params) {
//fetching data here....
}
}
}

编辑: 我今天尝试了这个,应用程序没有崩溃,但我的文本视图上也没有显示。

    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    final Runnable updateUI = new Runnable() {
        @Override
        public void run() {
            new getData().execute();
            ViewR.setText(rainD);
            ViewT.setText(deg);
        }
    };

    scheduler.scheduleAtFixedRate(updateUI, 5,
            60*60*24, TimeUnit.SECONDS);

0 个答案:

没有答案