Android:如何在不启动我的应用程序的情况下运行服务

时间:2012-07-30 04:21:29

标签: android service

我刚接触到android.I已在我的app中编写了一个服务。我安装了我的应用程序(未启动)..此时我的服务应该开始运行并打开一个UI ..如何做到这一点

4 个答案:

答案 0 :(得分:1)

安装应用程序后无法启动UI或服务,但您可以做的是听一些意图行动。从广播接收器开始你想要的任何东西。

您需要在清单中注册接收器,例如PHONE_STAT_CHANGE,收到消息,SCREEN UNLOCK等。您可以在自己的应用中听到很多意图并启动任何你想要的内容。

P.S: - 在开发者网站上搜索名称不正确

答案 1 :(得分:0)

不,这是不可能的。在您开始Service之前,用户必须明确地启动您的应用程序。遗憾。

答案 2 :(得分:0)

Deepak你可以通过广播接收器启动服务a,通过指定你想要激活广播接收器的基础,你可以在清单中声明广播接收器

<receiver android:name=".BroadCast"
              android:enabled="false"> 
            <intent-filter> 
                <action android:name=
                    "android.intent.action.PHONE_STATE" /> 
            </intent-filter> 
        </receiver>

收到电话时应激活

你可以像

一样打电话给你的服务
public class BroadCast extends BroadcastReceiver{
    Context context = null;
    @Override
    public void onReceive(Context context, Intent intent) 
    {

            Intent dndService = new Intent(context,
                    ContactService.class);
            dndService.putExtra("phone_nr", number);
            context.startService(dndService);
        }
    } 

当手机响铃时,您的广播接收器将被激活并启动服务,您可以通过该服务启动

等活动。
public class ServiceExample extends IntentService {



    public ServiceExample () {
        super("ServiceExample ");
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub

        Intent.intent = new Intent(this , Example.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent );

}
}  

并且你需要在活动之前添加这一行,否则它会给你一个崩溃

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

答案 3 :(得分:0)

我认为最好先考虑在服务onStartCommand中让您的服务“返回START_STICKY”。

然后你可以添加一个启动监听器,如下所示; 1.在你的舱单上,请求许可:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  1. 然后有一个广播列表器设置来监听启动:

    public class MyBroadcastreceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
      Intent startServiceIntent = new Intent(context, MyService.class);
      context.startService(startServiceIntent);
    }
    
  2. 您的服务将无限期运行,如果由于内存丢失而停止,则可以在资源可用时自动重启;