Android系统。如何从不同的活动中获取上下文

时间:2013-10-12 13:25:09

标签: android android-intent broadcastreceiver google-cloud-messaging

我正在玩GCM。

使用https://code.google.com/p/gcm/source/checkout上的示例,一切都很完美 我使用gcm消息在我的应用上收到通知

现在我想在位于MainActivity上的listView中添加消息。

我在另一个类(GcmIntentService.java)上接收我的消息。如何将MainActivity上下文发送到sendBroadcast。

已经尝试过

private static Context mContext;

public static Context getContext() {
    return mContext;
}

public static void setContext(Context context) {
    mContext = context;
}

但是没有用。

任何想法。

由于

3 个答案:

答案 0 :(得分:5)

我不确定你在做什么。但请记住以下内容

不要长期保持对上下文活动的引用(对活动的引用应该与活动本身具有相同的生命周期)。 http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/

您可以执行以下操作

示例:

 new MyClass(ActivityName.this);

class MyClass
{
      Context mContext; 
      public MyClass(Context context)
      {
          mContext=context;
      } 
}

答案 1 :(得分:1)

通过构造函数传递上下文变量。

答案 2 :(得分:0)

创建如下所示的新活动

public class GetContext extends AppCompatActivity {

Context mainActivity;

public GetContext(Context mainActivity){
    this.mainActivity = mainActivity;
}

并在您以前的mainActivity中发送此上下文,如下所示

GetContext sendContext = new GetContext(mainActivityContext);

其中mainActivityContextContext mainActivityContext = this; 或直接传递它而不是mainActivityContext

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_get_attendance_from_database);
}