更新尚未打开的活动

时间:2014-06-17 10:48:41

标签: android android-activity views screen background-process

更新用户尚未打开的活动信息的最佳方法是什么?

例如说我有三个活动; A,B和C.假设我想打开应用程序并按下活动A上的按钮,该按钮会更改活动B和C上显示的信息,而无需先打开B和C.我知道这样做会导致应用程序崩溃,因为在B和C上更改的变量尚未被声明和初始化,我知道解决这个问题的方法是首先打开C然后打开B然后打开A来启动应用程序。 ,开始所有三个活动,但这似乎凌乱。

有没有办法透明地打开/启动B和C而不会在应用程序启动时跳转到不同的活动?
谢谢

2 个答案:

答案 0 :(得分:1)

在Java中传递消息

  • 当线程将消息(对象)发送到另一个线程时。

  • 用于线程没有共享内存的环境中的线程通信和同步因此,线程无法共享信号量或监视器,也无法使用共享变量进行通信。当然,仍然可以在共享内存平台中使用消息传递。

  • 通过具有发送(频道,消息)等操作的信道发送消息,并通过接收(频道,消息)等操作从频道接收消息。消息可以同步传递,这意味着发送方阻塞,直到接收到接收,接收方阻塞,直到发送方发送。由于发送方和接收方在已知的特定时刻在其代码中处于特定的已知点,因此同步消息传递也称为简单的会合,其具有从发送方到接收方的单向信息流。一个例子是国际象棋游戏代理。代理可以同步处理消息,因为它们将在整个游戏中进行握手。

- 在异步消息传递中,发件人不会阻止。如果没有接收方等待接收消息,则消息排队或缓冲。如果在执行接收时没有排队或缓冲的消息,接收器仍会阻塞。

class A{

    public static void main(){
        B objB = new B(); 
        objB.setValue(3); 

    }


}



class B{
    static int value; 
    public void setValue(int valueFromAnotherClass){
        value = valueFromAnotherClass; 

    }

}

答案 1 :(得分:1)

您需要从A创建的持久存储创建B和C活动,例如,使用SharedPreferences存储您需要更新的数据,并在B和C中使用它来加载以前存储的数据。

SharedPreferences与键/值数据一起使用,在应用程序的整个上下文中很有用,它也接受字符串,整数和几乎所有你需要的东西。

作为迷你模板:

SharedPreferences prefs = getSharedPreferences("name_of_your_preferences_store", Context.MODE_PRIVATE);

...

public boolean setActualData(String data){

        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("my_tag_for_specific_data_field", data);
        return editor.commit();
    }

public String getActualData(){

            return prefs.getString("my_tag_for_specific_data", "data_defeult_return_value");

        }