使用Android时,我对所有不同的术语感到困惑:活动,服务......
现在我创建了一项服务:
startService(new Intent(this, RingerServer.class));
此服务启动一个帖子:
public class RingerServer extends Service {
public void onCreate() {
super.onCreate();
new Thread(new Ringer()).start();
}
public class Ringer implements Runnable { ... }
public void refuseConnection() { ... }
}
在这个服务中,RingerServer,我也有我想要使用的方法。我想继续引用RingerServer。我基本上喜欢创建服务的Activity能够调用refuseConnection(),但不能使该方法静态。
startService返回一个ComponentName,所以我一直试图将它强制转换回RingerServer,但这似乎不起作用。我看到它有getClass(),我已经检查过,getClassName()给了我正确的类。我虽然没能正确使用getClass()。
有什么办法可以保留对新创建的RingerServer类的引用吗?我确信这是微不足道的,但我现在被困住了。
非常感谢,
詹姆斯
答案 0 :(得分:0)
您有两个选择
1.Override onStartCommand of service并使用action启动服务器。该意图将在服务中接收,基于您可以调用refuseConnection()
的意图动作//In Activity
...
//Start the service
Intent intent=new Intent("com.xx.xx.REFUSE_CONNECTION");
startService(this,intent);
...
//In Service
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
if(intent.getAction().equals("com.xx.xx.REFUSE_CONNECTION")){
//Refuse the connection
refuseConnection();
}else {
//Do something else
}
}
//在清单中
<service android:name="RingerService">
<intent-filter>
<action android:name="com.xx.xx.REFUSE_CONNECTION"></action>
</intent-filter>
</service>
答案 1 :(得分:0)
您可以使用ServiceConnection访问您的服务类。请在此处查看示例代码:
Android service running after pressing Home key
也就是说,通过服务的onStart处理程序管理事物要简单得多。