进入清单:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
进入申请表:
<service android:name="Myservice"/>
<receiver android:name="com.myapp.Onstart"> <!-- Tested also only .Onstart -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Onstart.java:
package com.myapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Onstart extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
context.startService(new Intent(context, Myservice.class));
}
}
}
Myservice.java:
package com.myapp;
import android.app.IntentService;
import android.content.Intent;
import android.util.Log;
public class Myservice extends IntentService
{
public Myservice() {
super("Myservice");
}
@Override
protected void onHandleIntent(Intent intent) {
int n=0;
while(true)
{
if (i==20) {
stopSelf();
}
i = i++;
Log.i("Test", "n."+n++);
try {
Thread.sleep(10000);
}
catch (InterruptedException e)
{ }
}
}
}
手动启动应用程序显示在Main.java中,如果我的IntentService Myservice
仍在运行,我想知道(在Main.java中)。怎么做?
答案 0 :(得分:1)
虽然我知道你的问题是它是否正在运行,但我不明白为什么你需要知道。因为IntentService按需工作。
IntentService是处理异步的Services的基类 请求(表示为Intents)。客户端发送请求 通过startService(Intent)调用;该服务根据需要启动, 使用工作线程依次处理每个Intent,并自行停止 当它用完了。
另外,从Context.startService(Intent)调用doc:
如果服务正在启动或已在运行,则 返回已启动的实际服务的ComponentName;其他 如果服务不存在则返回null。
如果必须,可以检查startService(Intent)返回参数。
编辑:您似乎只需要由您而非系统处理启动服务。这将允许您拥有自己的停止条件。有关如何使用它们,请参阅Services和Services Guide。
参考文献:
IntentService
startService(Intent service)
Services
Services Guide