×

android退出app 应用程序 droid

Android 怎么退出整个应用程序?如何Android中自定义Navigationbar

admin admin 发表于2022-04-28 16:23:18 浏览150 评论0

抢沙发发表评论

Android 怎么退出整个应用程序

1.后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:public boolean onCreateOptionsMenu(Menu menu){super.onCreateOptionsMenu(menu);MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, “Exit“);item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener(){public boolean onMenuItemClick(MenuItem item){System.exit(0);return true;}});return true;}2.这样太不方便,每次退出界面之后应用程序还在运行,网上提供了几种方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。附代码:import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Intent; public class SysApplication extends Application { private List mList = new LinkedList(); private static SysApplication instance; private SysApplication() { } public synchronized static SysApplication getInstance() { if (null == instance) { instance = new SysApplication(); } return instance; } // add Activity public void addActivity(Activity activity) { mList.add(activity); } public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { System.exit(0); } } public void onLowMemory() { super.onLowMemory(); System.gc(); } }3.在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)如:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);SysApplication.getInstance().addActivity(this); }

如何Android中自定义Navigationbar

你会发现它们并没有实体按键或触摸感应按键,取而代之的是在屏幕的下方加了一个小黑条,在这个黑条上有3个按钮控件,这种设置无疑使得手机的外观的设计更加简约。但我遇到身边用Nexus 4手机的人都吐槽这种设计,原因很简单:好端端的屏幕,被划出一块区域用来显示3个按钮(如下图所示):Back, Home, Recent。并且它一直用在那里占用着。在android源码中,那一块区域被叫做NavigationBar。同时,google在代码中也预留了标志,用来控制它的显示与隐藏。NavigationBar的显示与隐藏的控制是放在SystemU中的,具体的路径是:\frameworks\base\packages\SystemUI。对android4.0以上的手机而言,SystemUi包含两部分:StatusBar和NavigationBar。在SystemUI的工程下有一个类PhoneStatusBar.java,在该类中可以发现关于控制NavigationBar的相关代码:在start()方法里可以看到NavigationBar是在那时候被添加进来,但只是添加,决定它显示还是隐藏是在后面控制的。《span style=“font-size:18px;“》@Overridepublic void start() {mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();updateDisplaySize();/// M: Support Smartbook Feature.if (SIMHelper.isMediatekSmartBookSupport()) {/// M: [ALPS01097705] Query the plug-in state as soon as possible.mIsDisplayDevice = SIMHelper.isSmartBookPluggedIn(mContext);Log.v(TAG, “start, mIsDisplayDevice=“ + mIsDisplayDevice);}super.start(); // calls createAndAddWindows()addNavigationBar();// Lastly, call to the icon policy to install/update all the icons.mIconPolicy = new PhoneStatusBarPolicy(mContext);mHeadsUpObserver.onChange(true); // set upif (ENABLE_HEADS_UP) {mContext.getContentResolver().registerContentObserver(Settings.Global.getUriFor(SETTING_HEADS_UP), true,mHeadsUpObserver);}}《/span》其中的addNavigationBar()具体的实现方法如下:《span style=“font-size:18px;“》 // For small-screen devices (read: phones) that lack hardware navigation buttonsprivate void addNavigationBar() {if (DEBUG) Slog.v(TAG, “addNavigationBar: about to add “ + mNavigationBarView);if (mNavigationBarView == null) return;prepareNavigationBarView();mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());}《/span》可以看到Navigationbar实际上windowmanager向window窗口里添加一个view。在调用addNavigationBar()方法之前会回调start()的父方法super.start()来判断是否要添加NavigationBar。在super.start()的调用父类方法里会调用createAndAddWindows(),该方法内会判断是否需要添加显示NavigationBar,然后决定是否要实例化NavigationBarView.《span style=“font-size:18px;“》try {boolean showNav = mWindowManagerService.hasNavigationBar();if (DEBUG) Slog.v(TAG, “hasNavigationBar=“ + showNav);if (showNav) {mNavigationBarView =(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);mNavigationBarView.setDisabledFlags(mDisabled);mNavigationBarView.setBar(this);}} catch (RemoteException ex) {// no window manager? good luck with that}《/span》WindowManagerService类实现了WindowManagerPolicy的接口,所以WindowManagerService会回调WindowManagerPolicy 的hasNavigationBar()接口,《span style=“font-size:18px;“》 @Overridepublic boolean hasNavigationBar() {return mPolicy.hasNavigationBar();}《/span》Policy向下调用实际上调用的是PhoneWindowManager实现的hasNavigationBar方法,下面代码是PhoneWindowManager中的hasNavigationBar()方法。《span style=“font-size:18px;“》// Use this instead of checking config_showNavigationBar so that it can be consistently// overridden by qemu.hw.mainkeys in the emulator.public boolean hasNavigationBar() {return mHasNavigationBar;}《/span》而mHasNavigationBar的赋值可以在PhoneWindowManager中的setInitialDisplaySize(Display display, int width, int height, int density)方法中找到,《span style=“font-size:18px;“》 if (!mHasSystemNavBar) {mHasNavigationBar = mContext.getResources().getBoolean(com.android.internal.R.bool.config_showNavigationBar);// Allow a system property to override this. Used by the emulator.// See also hasNavigationBar().String navBarOverride = SystemProperties.get(“qemu.hw.mainkeys“);if (! ““.equals(navBarOverride)) {if (navBarOverride.equals(“1“)) mHasNavigationBar = false;else if (navBarOverride.equals(“0“)) mHasNavigationBar = true;}} else {mHasNavigationBar = false;}《/span》从上面代码可以看到mHasNavigationBar的值的设定是由两处决定的:1.首先从系统的资源文件中取设定值config_showNavigationBar, 这个值的设定的文件路径是frameworks/base/core/res/res/values/config.xml《!-- Whether a software navigation bar should be shown. NOTE: in the future this may beautodetected from the Configuration. --》《bool name=“config_showNavigationBar“》false《/bool》2.然后系统要获取“qemu.hw.mainkeys”的值,这个值可能会覆盖上面获取到的mHasNavigationBar的值。如果 “qemu.hw.mainkeys”获取的值不为空的话,不管值是true还是false,都要依据后面的情况来设定。所以上面的两处设定共同决定了NavigationBar的显示与隐藏。

怎么打开第三方应用程序

回答
苹果如何打开第三方应用的图文步骤:
1、首先需要安装好通过第三方渠道安装好的APP软件;
2、点击打开之后会出现如下这种情况,出现这种情况就表示这个商品属于第三方软件,未经过苹果APPstore授权,需要进行授信操作;
3、找到手机设置的入口,点击设置,进入设置页面进行相关操作;
4、点击通用按钮,进入通用界面,下拉到最下方找到设备管理选项。具体如下;
5、点击设备管理选项,进行设备管理,进行授信操作,授信操作之后即可打开通过第三方渠道安装的APP啦
更多9条