Android活动:定期更新来自同一数据源的两个活动文本

Say*_*eaj 0 android timertask android-asynctask android-activity

我有2个活动,i)MainActivity ii)FavoriteActivity和非活动类RadioService.两个Activity都有一个相同的方法 - notifyShowBar(),它显示了一个在showbar.xml@layout中定义的文本栏.

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

@Override
protected void onResume() {
    super.onResume();
    notifyShowBar();
}
public void notifyShowBar() {
....
    textView.setText(revs.getMeta());
....
}
.....
Run Code Online (Sandbox Code Playgroud)

FavoriteActivity.java

public class FavoriteActivity extends AppCompatActivity implements View.OnClickListener {

@Override
protected void onResume() {
    super.onResume();
    notifyShowBar();
}
public void notifyShowBar() {
....
    textView.setText(revs.getMeta());
....
}
.....
Run Code Online (Sandbox Code Playgroud)

现在,当一个活动调用RadioService时,它会创建一个timertask,然后定期从服务器获取信息,并在父活动中显示bar.因此栏显示每15秒更新一次信息.

private class ProgressTask extends AsyncTask<String, Void, Boolean> {

    @Override
    protected void onPostExecute(final Boolean success) {
            updateMeta();
            ....
    }

    public void updateMeta() {
    timerAsync = new Timer();
    timerTaskAsync = new TimerTask() {
        @Override
        public void run() {
                ((Activity)context).runOnUiThread(new Runnable() {
                @Override public void run() {
                    // get and set meta data here and then call createShowBar
                    createShowBar();
                }
            });
        }
    };
    timerAsync.schedule(timerTaskAsync, 0, 15000);
    }

    private void createShowBar() {
    if (RadioService.inwhich == 2) {
        ((FavoriteActivity) context).notifyShowBar();
    } else {
        ((MainActivity) context).notifyShowBar();
    }
    }
.....
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在MainActivity中执行一个调用RadioService的按钮,它会显示条形并定期更新.但是当我浏览到FavoriteActivity时,它会显示条形但不会定期更新.我怎样才能让这两项活动都成功?谢谢.

小智 5

这可以通过简单的继承规则来完成.abstract BaseActivity使用notifyShowBar扩展的抽象方法创建AppCompatActivity.使用MainActivity&FavoriteActivity作为子类BaseActivity.因为由于抽象的规则,该notifyShowBar方法将在即将实施MainActivityFavoriteActivity,所以每当你打电话notifyShowBarBaseActivity,它会调用在子类相同