gpt4 book ai didi

在 `runnableThread` 类中运行新的 `Service` 时出现 java.lang.ClassCastException

转载 作者:搜寻专家 更新时间:2023-11-01 08:51:08 25 4
gpt4 key购买 nike

我有一个应用程序,包含一个 broadcastReceiver,它监听所有新收到的 SMS.如果收到此 BroadcastReceiver 的任何新 SMS 启动运行 GPS 并返回坐标的后台 Service,此坐标检索需要运行一个新线程,在 Service 类中有没有 getApplicationContext() 所以我使用 'getContentBase()' 来启动新线程这是代码

((Activity)getBaseContext()).runOnUiThread(new Runnable() {

                ((Activity)getBaseContext()).runOnUiThread(new Runnable() {


@Override
public void run() {
// TODO Auto-generated method stub

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

LocationListener locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 10,
locationListener);
}
}

我得到了这个异常

 E/AndroidRuntime(24700): java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity

这是 list 中定义的接收器

    <receiver
android:name=".BroadCastReceiver"
android:exported="true" >
<intent-filter android:priority="1000" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

下面是服务如何在 BroadcastReceiver

中启动
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

context.startService(new Intent(con,
MyService.class));

}

异常(exception)是在这一行

                ((Activity)getBaseContext()).runOnUiThread(new Runnable() 

我已经通过堆栈和谷歌搜索了很多,没有答案解决了我的问题,并尝试将上下文从 BroadCastReceiver 发送到 Service 类,再次出现相同的异常,有什么帮助吗??

最佳答案

首先,Service 扩展了 ContextWrapper,因此是一个 Context。如果您需要对上下文的引用,您可以简单地引用您的服务。您不能将服务的基础上下文转换为 Activity

如果您想从服务处理 UI 线程,请查看使用 Looper.getMainLooper() 创建一个 Handler

...
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

LocationListener locationListener = new MyLocationListener();

locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
});
...

Android 文档提供了有关与 UI 线程通信的良好信息。看看这里:

http://developer.android.com/training/multiple-threads/communicate-ui.html

关于在 `runnableThread` 类中运行新的 `Service` 时出现 java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com