如何 运行 java 在后台
How to run java In background
如何在后台 运行 这个,我的意思是即使我转到其他应用程序或转到 android 的主屏幕或关闭屏幕,按钮仍会自行点击
请帮助我
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
button1.performClick();
}
}, 5000);
须知
我会尽量用通俗易懂的方式详细说明,以便您更好地理解线程和异步任务
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//business logic
}
}, 5000);
- 是一个
Blocking
方法,它 运行 在 UI 线程上(我假设你是 programming/android)[请阅读 Threads 以深入理解我在说什么],
- 这意味着,简而言之,您的应用程序正在线程上执行一些逻辑(“A worker”负责呈现 UI on-screen),
- 通过使用 Threads,您可以通过将多个任务分配给多个工作人员“Threads”来提高应用程序的效率,但您不能运行 您的应用程序在后台。
如何让您的应用程序在后台运行?
Google 在 Android Oreo 中引入了一些背景限制。所以要让您的应用程序保持活力,您需要
foreground service by showing an ongoing notification.
1.你应该实现服务的方式就像
public class YourService extends Service {
private static final int NOTIF_ID = 1;
private static final String NOTIF_CHANNEL_ID = "Channel_Id";
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
// do your jobs here
startForeground();
return super.onStartCommand(intent, flags, startId);
}
private void startForeground() {
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
startForeground(NOTIF_ID, new NotificationCompat.Builder(this,
NOTIF_CHANNEL_ID) // don't forget create a notification channel first
.setOngoing(true)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(getString(R.string.app_name))
.setContentText("Service is running background")
.setContentIntent(pendingIntent)
.build());
}
}
2。另外你需要启动服务
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
startService(new Intent(this, YourService.class));
}
}
3。在 AndroidManifest.xml
的“应用程序”标签中添加您的服务
<service android:name=".YourService"/>
4。以及“清单”标签中的此权限请求(如果 API 级别 28 或更高)
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
通过这种方式,您可以将您的服务保留在后台。我建议你阅读文章并查看 GitHub 存储库,并练习练习练习以擅长 Android :)
如何在后台 运行 这个,我的意思是即使我转到其他应用程序或转到 android 的主屏幕或关闭屏幕,按钮仍会自行点击 请帮助我
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
button1.performClick();
}
}, 5000);
须知
我会尽量用通俗易懂的方式详细说明,以便您更好地理解线程和异步任务
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//business logic
}
}, 5000);
- 是一个
Blocking
方法,它 运行 在 UI 线程上(我假设你是 programming/android)[请阅读 Threads 以深入理解我在说什么], - 这意味着,简而言之,您的应用程序正在线程上执行一些逻辑(“A worker”负责呈现 UI on-screen),
- 通过使用 Threads,您可以通过将多个任务分配给多个工作人员“Threads”来提高应用程序的效率,但您不能运行 您的应用程序在后台。
如何让您的应用程序在后台运行?
Google 在 Android Oreo 中引入了一些背景限制。所以要让您的应用程序保持活力,您需要
foreground service by showing an ongoing notification.
1.你应该实现服务的方式就像
public class YourService extends Service {
private static final int NOTIF_ID = 1;
private static final String NOTIF_CHANNEL_ID = "Channel_Id";
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
// do your jobs here
startForeground();
return super.onStartCommand(intent, flags, startId);
}
private void startForeground() {
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
startForeground(NOTIF_ID, new NotificationCompat.Builder(this,
NOTIF_CHANNEL_ID) // don't forget create a notification channel first
.setOngoing(true)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(getString(R.string.app_name))
.setContentText("Service is running background")
.setContentIntent(pendingIntent)
.build());
}
}
2。另外你需要启动服务
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
startService(new Intent(this, YourService.class));
}
}
3。在 AndroidManifest.xml
的“应用程序”标签中添加您的服务<service android:name=".YourService"/>
4。以及“清单”标签中的此权限请求(如果 API 级别 28 或更高)
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
通过这种方式,您可以将您的服务保留在后台。我建议你阅读文章并查看 GitHub 存储库,并练习练习练习以擅长 Android :)