我有一个孩子的应用程序,我想阻止他们访问手机功能。它必须坚如磐石,只是避免意外退出。
我正在使用的方法是启动一项服务来监视我的Activity何时失焦,然后重新启动它。我已经按照指南进行了操作:
这个想法是你的活动绑定到onStart中的服务,并在onStop()期间取消绑定。当最后一个活动解除绑定时,会在服务中调用onUnbind,然后重新启动Activity。
继承人的活动:
public class GameActivity extends Activity {
@Override
public void onStart() {
super.onStart();
// Next call always returns true
bindService( new Intent( this, LockService.class ),
mConnection, Context.BIND_AUTO_CREATE );
}
@Override
public void onStop() {
super.onStop();
unbindService( mConnection );
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected( ComponentName cn, IBinder service ) {}
public void onServiceDisconnected( ComponentName cn ) {}
};
}
这是服务:
public class LockService extends Service {
@Override
public void onCreate() {
super.onCreate();
refocus();
}
private void refocus() {
// Launch the monitored Activity
Intent intent = new Intent(getBaseContext(), GameActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
@Override
public boolean onUnbind( Intent intent ) {
// Relaunch
refocus();
return false;
}
@Override
public IBinder onBind( Intent intent ) {
return mBinder;
}
public class LocalBinder extends Binder {
LockService getService() {
return LockService.this;
}
}
private final IBinder mBinder = new LocalBinder();
}
这只能运作一次。当GameActivity关闭或最小化时,会调用LockService.onUnbind。
重新启动GameActivity,它试图再次绑定到服务。它返回true,但LockService.onBind不会再次发生,因此当Activity停止时LockService.onUnbind不会发生。链接丢失了。
现在,我确实有这个工作,但我已经改变了一些东西并打破了它。也许我重新启动Activity的方式?我希望在它工作时我将它检入SVN!
感激不尽的任何帮助。
由于
编辑:以下是我从MenuActivity:
启动服务的方式public static void StartLockService() {
Context context = getApplicationContext();
Intent intent = new Intent(context, LockService.class);
context.startService(intent);
}
答案 0 :(得分:0)
好的,我已经知道了,感谢Android Service: onBind(Intent) and onUnbind(Intent) is called just once
看起来我需要从onUnbind返回true表示我想要onRebind通知。
然后我可以将我的应用重新聚焦在onRebind上。