【发布时间】:2019-02-12 13:59:39
【问题描述】:
作为一名 Unity3D 开发人员,我创建了一个应用程序并将其导出到 Android Studio。我的客户要求我在用户不活动 10 秒后让这个应用程序回到前台(以防用户打开另一个应用程序)。我试图创建一个在我的 UnityPlayerActivity 的 OnPause 函数上启动的服务。然后该服务将检测用户的不活动并再次启动我的应用程序(将其放回前台)。首先,无论如何,我只尝试使用 Time.Schedule 在 10 秒后启动我的应用程序,但每次应用程序暂停(进入后台)时,它都会启动服务然后崩溃。问题是:有没有一种简单的方法可以做到这一点?我不是 Android Java 开发人员(只知道基础知识),我在这部分苦苦挣扎。
我正在尝试创建此服务,然后尝试从我的活动中的 onPause() 函数启动它。当我暂停手机上的应用程序时,应用程序崩溃。谁能告诉我我的方法是否正确,请帮助我?
public class ReturnToForeground extends Service {
public ReturnToForeground() {
}
// constant
public static final long NOTIFY_INTERVAL = 10 * 1000; // 10 seconds
// run on another Thread to avoid crash
private Handler mHandler = new Handler();
// timer handling
private Timer mTimer = null;
Intent intent = new Intent(this, UnityPlayerActivity.class);
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// cancel if already existed
if (mTimer != null) {
mTimer.cancel();
} else {
// recreate new
mTimer = new Timer();
}
// schedule task
mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
return super.onStartCommand(intent, flags, startId);
}
class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
// run on another thread
mHandler.post(new Runnable() {
@Override
public void run() {
// do action
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(intent);
}
});
}
}
}
【问题讨论】:
-
为了明确,您正在寻求一种在用户离开应用十秒钟时强制用户返回您的应用的方法,并且您想统一执行此操作?
-
嗨。不完全是。如果他十秒钟不使用手机,我想“强制”用户回到我的应用程序。我知道我必须使用服务来执行此操作,但我不想使用 Unity 执行此操作,我正在尝试使用 Android Studio(尽管我不是 Java 开发人员)。我不会把这个应用放到游戏商店,当然,这只是给我的客户,他是唯一会使用这个的人。我想知道如何在不使应用崩溃的情况下使该服务正常运行。
-
My client is asking me to make this app go back to foreground after 10 seconds of user's inactivity (in case the user opens another app这听起来像是一个非常讨厌的垃圾邮件,我作为用户不想在这里支持......或者是试图创建一个自定义电话储物柜?首先,两者都与 Unity 没有太大关系.. -
@derHugo ahahahaha 不,这不是垃圾邮件。我的应用程序具有增强现实体验,将在某些销售点运行。正如你所说,它更像是一个定制的手机储物柜。该应用程序一直播放视频,当用户拿起手机时,它会启动 AR 体验,如果用户停止使用手机,它会返回视频,但如果用户打开另一个应用程序然后停止使用手机,我的应用程序10 秒后回到前台。
标签: java c# android unity3d service