我现在开始编写服务例程,每次重新运行代码时都会收到一条错误消息,而无需更改任何内容。
这是服务例程:
公共类 PollingService 扩展服务{
private static final String TAG = PollingService.class.getSimpleName();
private Polling updater;
public boolean isRunning = false;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
updater = new Polling();
Log.d(TAG, "On Create'd");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Start the Polling updater
if(!this.isRunning){
updater.start();
this.isRunning = true;
}
Log.d(TAG, "On Start'd");
return super.onStartCommand(intent, flags, startId);
}
@Override
public synchronized void onDestroy() {
super.onDestroy();
// Stop the Polling updater
if(this.isRunning){
updater.interrupt();
}
Log.d(TAG, "On Destroy'd");
}
// Polling Thread
class Polling extends Thread {
static final long DELAY = 3000;
@Override
public void run() {
while (isRunning) {
try {
// Do something
Log.d(TAG, "Polling run'ing");
// Sleep
Thread.sleep(DELAY);
} catch (InterruptedException e) {
// Interrupted
isRunning = false;
}
}
}
}
}
当我运行应用程序时,我在 LogCat 中看到“On Create'd”和“On Start'd”以及“Polling run'ing”,但是,我重新运行程序以查看我是否仅获得“On Start'd”在 LogCat 中。但是我得到了这个错误:
ActivityManager: 开始: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.project.keegan/.StartApp } ActivityManager: 警告: Activity 未启动,其当前任务已完成带到了最前面
当我检查 LogCat 时,它仍然显示“正在轮询”。所以我进入了模拟器:菜单->应用程序管理器->我停止了服务。
当我重新运行程序时,我遇到了同样的两个错误,我的应用程序启动了,但服务没有启动。但有趣的是,每当我对代码进行任何更改(例如,如果我只是按空格键然后退格键)并单击“保存”,然后重新运行程序,服务就会再次运行。
这是我调用它的类:
公共类 StartApp 扩展 Activity 实现 View.OnClickListener{
TextView disp_hello;
Button but_go2send, but_go2request;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.start_app);
Vars();
startService(new Intent(this, PollingService.class));
but_go2send.setOnClickListener(this);
but_go2request.setOnClickListener(this);
}
. . . }