如何从活动中调用服务?

时间:2011-09-02 09:29:12

标签: android

我有一项通过

开始活动的服务
                Intent dialogIntent = new Intent(getBaseContext(), dialog.class);
                dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                getApplication().startActivity(dialogIntent);

但是我不确定当这项新活动结束服务时如何传递电话?

请注意" startActivityForResult"不适用于服务。 ;)

另一方面,也许有一些"当焦点回来时#34;听取服务?

谢谢!

编辑:

活动以

结束
Intent dialogIntent = new Intent(getBaseContext(), TotalKeyboard.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);

finish();

然而,这在服务中并没有接到电话

     @Override public void onStart(Intent intent, int startid)
     {
         Toast.makeText(getApplicationContext(), "aaa!", Toast.LENGTH_SHORT).show();
     }

3 个答案:

答案 0 :(得分:2)

当您尝试使用start service already running时,onCreate方法无法接听电话,但是onStart()方法可以接听电话......你可以使用此属性来满足您的需求...

答案 1 :(得分:2)

foucs永远不会获得Service。我不确定您要实现的目标,也许这不是最佳解决方案,但您可以boundActivityService并在Service中声明一个方法1}}类,然后您可以在Activity提供服务后,从bound调用该方法。

编辑:您可以通过创建看起来像对话框的Service来模拟Activity的对话节目。您可以在theme

中设置AndroidManifest.xml属性来执行此操作
   <activity
        android:name="myPackages.ui.DialogActivity"
        android:theme="@android:style/Theme.Dialog"
        android:launchMode="singleInstance"
        android:excludeFromRecents="true"
        android:finishOnTaskLaunch="true" />

您可以在method中声明Service,然后说:

   public void performAction(boolean userChoice){
        //implementation
   }

在您的DialogActivity课程中,您可boundService课程,按下按钮即可致电:

  mBoundService.performAction(true);

  mBoundService.performAction(false);

基于用户选择。

答案 2 :(得分:1)

总之,活动本身必须照顾这一点。