gpt4 book ai didi

android - 在 Android 中创建后台服务

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:29 25 4
gpt4 key购买 nike

在我的项目中,我需要在 android 中创建一个服务。我可以这样注册服务:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >

<service android:enabled="true"
android:name=".ServiceTemplate"/>
<activity
android:name=".SampleServiceActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

我在如下 Activity 中调用此服务:-

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent service = new Intent(getApplicationContext(), ServiceTemplate.class);
this.startService(service);
}

但如果我终止当前 Activity ,该服务也会被破坏。我需要此服务始终在后台运行。我需要做什么?我如何注册该服务?如何启动服务?

最佳答案

这里有一个半不同的方式来保持服务永远运行。如果您愿意,可以通过代码将其杀死

后台服务:

package com.ex.ample;

import android.app.Service;
import android.content.*;
import android.os.*;
import android.widget.Toast;

public class BackgroundService extends Service {

public Context context = this;
public Handler handler = null;
public static Runnable runnable = null;

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show();

handler = new Handler();
runnable = new Runnable() {
public void run() {
Toast.makeText(context, "Service is still running", Toast.LENGTH_LONG).show();
handler.postDelayed(runnable, 10000);
}
};

handler.postDelayed(runnable, 15000);
}

@Override
public void onDestroy() {
/* IF YOU WANT THIS SERVICE KILLED WITH THE APP THEN UNCOMMENT THE FOLLOWING LINE */
//handler.removeCallbacks(runnable);
Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show();
}
}

以下是您如何从您的主要 Activity 或您希望的任何地方开始:

startService(new Intent(this, BackgroundService.class));

onDestroy() 将在应用程序关闭或终止时被调用,但 runnable 会立即启动它。您还需要删除处理程序回调。

我希望这能帮助到一些人。

有些人这样做的原因是因为公司应用程序在某些情况下用户/员工不能停止某些事情:)

http://i.imgur.com/1vCnYJW.png

关于android - 在 Android 中创建后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com