实时更新接收方的共享偏好?
问题描述:
这是我的第一个Android应用我试图更新reciever侧sharedpreferences下面的代码中实时对mainactivity.java实时更新接收方的共享偏好?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
disp =(TextView) findViewById(R.id.textView2);
sharedPreferences = getSharedPreferences(MyPREFERENCES,Context.MODE_PRIVATE);
String host = sharedPreferences.getString(hostip,"");
String clientId = MqttClient.generateClientId();
client = new MqttAndroidClient(this.getApplicationContext(),"tcp://"+host,clientId);
try {
IMqttToken token = client.connect();
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Toast.makeText(MainActivity.this,"Connected",Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Toast.makeText(MainActivity.this,"Connection failed",Toast.LENGTH_LONG).show();
}
});
} catch (MqttException e) {
e.printStackTrace();
}
}
settings.java这是发送方
SharedPreferences sharedpreferences;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String hostip = "hostipkey" ;
public static final String topic = "topickey" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
editText1 = (EditText) findViewById(R.id.ipadd);
editText2 = (EditText) findViewById(R.id.api);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String host = editText1.getText().toString();
String api = editText2.getText().toString();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(hostip, host);
editor.putString(topic, api);
editor.apply();
Toast.makeText(settings.this,"Done",Toast.LENGTH_LONG).show();
}
});
}
上面的代码工作正常,但我面临的问题是我的数据在共享首选项不实时更新接收方。为了获得数据,我不得不重新启动应用程序,以便主要活动中的新值得到更新。对此任何的帮助深表感谢
问候 SAIF
答
尝试更新MainActivity在onResume
值它将很好地工作。
非常感谢你是一个生命的救星先生 –
你是欢迎:) –