Java 使用putExtra将上下文传递给服务

Java 使用putExtra将上下文传递给服务,java,android,android-intent,service,Java,Android,Android Intent,Service,如何将上下文传递给具有putExtra的服务 问题是:android.os.Application无法转换为java.io.Serializable 如何解决这个问题 // main activity public void btnGetLocate() { Intent intent = new Intent(this, Sleeper.class); intent.putExtra("context", (Serializable) getApplicationContex

如何将
上下文
传递给具有
putExtra
的服务

问题是:
android.os.Application
无法转换为
java.io.Serializable

如何解决这个问题

// main activity
public void btnGetLocate() {
    Intent intent = new Intent(this, Sleeper.class); 
    intent.putExtra("context", (Serializable) getApplicationContext());
    startService(intent);
}

// another file
public class MyService extends IntentService {
    public Sleeper() {
        super("MyService"); 
    }

    protected void onHandleIntent(Intent intent) { 
        Context context = (Context) intent.getExtras().getSerializable("context"); // make Error, main problem
        MyClass mc = new MyClass(context);  
        ...
    }

    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "destroyed"), Toast.LENGTH_SHORT).show();  
    } 
}
您不能这样做(将上下文用作额外内容),因为该类应用程序未实现可序列化接口

最简单的方法是显示一个标题为“获取位置…”的对话框,并在当前活动中执行位置请求。然后,在获取位置后,关闭该对话框

您可以使用谷歌Play服务,以一种简单的方式获取位置


祝您好运!

您不能这样做,也不需要这样做。
服务不仅是
上下文
,而且
服务
可以调用
getApplicationContext()
获取
应用程序
对象,如果这是您真正需要的。不要传递服务本身可以获得的额外内容。

您应该绑定
服务
-在这种情况下,您可以在
活动
中引用
服务
对象。使用这些引用非常容易设置/发送
上下文


为什么要这样做?可能重复@pskink,因为gps定位器尝试其他解决方案请编写示例