
[英]Can any one tell me how to start zoom out from last zoom in point in android?
[英]How to back out of Application from any point.
我有一个访问服务器的应用程序。 我有许多活动访问服务器以获取数据。 在应用程序的不同点,我做了一个简单的检查,以验证两件事,1)有互联网连接和2)服务器不处于维护模式或关闭..如果是,我显示一个活动详细说明为什么和何时服务器将备份。
当用户单击此“服务器已关闭”活动时,我需要退出该应用程序。 我尝试了以下代码/意图调用“服务器关闭”活动,但它不起作用。
Intent i = new Intent(this, ServerMaintenanceActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
我看了一遍,这是一个非常普遍的问题,通常在登录/注销屏幕上。 我发现的解决方案都不适用于我。 我知道这是可能的,因为我有这样的应用程序,例如Spotify。
有任何想法吗? 谢谢。
无论何时启动活动,都可以创建新的ResultReceiver
然后将其放入全局帮助程序类的列表中。 然后,在您的通知活动中(告诉用户“服务器已关闭”),覆盖onDestroy()
并发送请求以完成其他操作。
例如:
Helper
班:
public static final int REQUEST_FINISH = 1; private static final List<ResultReceiver> mClients = new ArrayList<ResultReceiver>(); public static void registerClient(ResultReceiver receiver) { mClients.add(receiver); } public static void unregisterClient(ResultReceiver receiver) { mClients.remove(receiver); } public static void finishApp() { for (ResultReceiver client : mClients) client.send(REQUEST_FINISH, null); }
其他活动:
private ResultReceiver mCommandHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... mCommandHandler = new ResultReceiver(null) { @Override public void onReceiveResult(int resultCode, Bundle resultData) { if (resultCode == Helper.REQUEST_FINISH) { // do some other stuffs... finish(); } } }; Helper.registerClient(mCommandHandler); }// onCreate() @Override protected void onDestroy() { super.onDestroy(); Helper.unregisterClient(mCommandHandler); }
通知活动:
@Override protected void onDestroy() { super.onDestroy(); Helper.finishApp(); }
在启动ServerMaintenanceActivity
之前,请完成当前的操作,因此当您按Back时,它应该从堆栈中删除。
//...
startActivity(i);
finish();
删除Intent.FLAG_ACTIVITY_NEW_TASK。 如果您使用NEW_TASK标志启动新活动,则会启动新任务。 您不希望新任务,您想要清除所有当前任务活动堆栈。 所以删除FLAG_ACTIVITY_NEW_TASK。 PS以这种方式关闭所有活动并不是最好的解决方案,ResultReceiver更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.