服务不工作?

时间:2015-11-01 22:38:22

标签: android xml service manifest background-process

我正在构建一个游戏,我希望用户在20秒内完成许多活动。一旦20秒结束,我想将用户发送到GameOver屏幕。为了在后台运行计时器,我使用了一项服务。问题是,服务似乎没有运行?

enter image description here

奇怪的是,即使吐司也没有显示出来。这是我称之为服务的地方:

enter image description here

这是清单:

enter image description here

请告知我服务或计时器为何没有运行的原因。非常感谢你的帮助,我真的很感激!如果您需要更多代码,请告诉我,我会告诉您。谢谢!

: - )

{Rich}

2 个答案:

答案 0 :(得分:1)

服务无法与用户界面进行互动,这就是Toast所做的事情。如果您想这样做,请尝试使用runOnUIThreadgetApplicationContext或使用绑定/回调的奇特方式。另外,看看AlarmManager,可能是一个更简单的解决方案,而不是运行服务。

答案 1 :(得分:0)

BroadcastReciever应该是获得和展示祝酒词的解决方案。只需从服务发送消息并在活动中捕获它。然后在任何地方使用它。

//Service class
final static String ACTION = "ACTION";

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    intent = new Intent();
    intent.setAction(ACTION);
    intent.putExtra("StartToast", "Started!");
    sendBroadcast(intent);

    return START_STICKY;
}

//Activity class
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    intent = new Intent(MainActivity.this, ServiceClass.class);

    myReceiver = new MyReceiver();
    intentFilter = new IntentFilter();
    intentFilter.addAction(ServiceClass.ACTION);
    registerReceiver(myReceiver, intentFilter);

}

private class MyReceiver extends BroadcastReceiver {

    public String startToast;

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // TODO Auto-generated method stub

        startToast = arg1.getStringExtra("StartedToast");
        Toast.makeText(MainActivity.this, startToast, Toast.LENGTH_SHORT).show();

    }

注册此接收器后,当您使用intent.putExtra(....);发送数据时,您会收到消息并自动创建一个祝酒词。