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
方法将在即将实施MainActivity
及FavoriteActivity
,所以每当你打电话notifyShowBar
的BaseActivity
,它会调用在子类相同
归档时间: |
|
查看次数: |
136 次 |
最近记录: |