Android 动态更新接口
我正在开发一个android应用程序,它可以通过短信被其他手机控制。我正在使用Android 动态更新接口,android,android-layout,service,Android,Android Layout,Service,我正在开发一个android应用程序,它可以通过短信被其他手机控制。我正在使用首选项屏幕作为布局(应用程序的设置部分)。调用onResume()时,布局将更新 当通过其他移动设备发送命令(SMS)时,后台运行的服务会监听传入的SMS并更改保存在SharedReferences中的设置。为了查看这些更改,我的活动需要执行onResume中的代码。如果我回到上一个活动并返回,我可以看到更改 我希望在运行服务更改SharedReferences后立即显示更改。我应该怎么做才能让它发生呢?类似这样的事情
首选项屏幕
作为布局(应用程序的设置部分)。调用onResume()
时,布局将更新
当通过其他移动设备发送命令(SMS)时,后台运行的服务会监听传入的SMS并更改保存在SharedReferences中的设置。为了查看这些更改,我的活动需要执行onResume
中的代码。如果我回到上一个活动并返回,我可以看到更改
我希望在运行服务更改SharedReferences后立即显示更改。我应该怎么做才能让它发生呢?类似这样的事情:
public class MyActivity extends Activity implements OnSharedPreferenceChangeListener
{
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state)
{
/* get shared preferences */
SharedPreferences mySharedPreferences = getSharedPreferences(PREFS_NAME, 0);
/* register listener for changes to the values within the shared preferences */
mySharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
/* perform application processing */
...
/* update layout */
View myView = findViewById(id.my_view);
/* invalidate the view causing it to be redrawn */
myView.invalidate();
}
}
谢谢你的快速回复。如果对与
mySharedPreferences
关联的对象进行了更改,则此代码有效。在我的服务中,我正在创建一个新的SharedReferences实例。因此,如果更改是在服务内部进行的,则不会调用当前活动中的onSharedPreferenceChanged!检查这里:我有你的代码,但这是问题所在