【发布时间】:2019-08-12 11:15:20
【问题描述】:
我有一个基本的Preference 子类,其中有一个Handler。它会每秒触发一次,但如果自定义Preference 不再可见,它不会停止。
<PreferenceCategory
android:layout="@layout/pref_category_text"
android:title="@string/pref_category_stat_out_title">
<com.sunlux.smartpower.extended.preferences.ShowStatPreference android:key="@string/pref_key_show_stat" />
</PreferenceCategory>
public class ShowStatPreference extends Preference {
private long MEGABYTE = 1024L * 1024L;
private TextView bytesStat;
private Handler mHandler;
/**
* Timer for updating stat
*/
private final Runnable statRunnable = new Runnable() {
@Override
public void run() {
setStatSomething();
startStatTimer();
}
};
public ShowStatPreference(Context context) {
super(context);
}
public ShowStatPreference(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ShowStatPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWidgetLayoutResource(R.layout.show_stat_preference);
mHandler = new Handler();
startStatTimer();
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
holder.itemView.setClickable(false); // disable parent click
bytesStat = (TextView) holder.findViewById(R.id.bytes);
super.onBindViewHolder(holder);
}
private void startStatTimer() {
mHandler.postDelayed(statRunnable, 1000);
}
private void setStatSomething(){
// do stuff
}
}
当我更改PagerAdapter 中的选项卡或应用程序正在关闭时,我可以通过侦听器发送消息使其停止。
这是我唯一选择的吗?
有什么想法吗?
【问题讨论】:
标签: java android android-preferences android-handler