代码之家  ›  专栏  ›  技术社区  ›  Shouvik

错误:类型ActivityManager的方法xxx未定义

  •  0
  • Shouvik  · 技术社区  · 14 年前

    我得到以下错误:

    http://developer.android.com/reference/android/app/ActivityManager.html#killBackgroundProcesses%28java.lang.String%29 .

    这是密码,请帮我找出哪里出错了?

    package com.robosoft.killswitch;
    
    import java.util.List;
    
    import android.app.ActivityManager;
    import android.app.ListActivity;
    import android.app.ActivityManager.RunningAppProcessInfo;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class KillSwitch extends ListActivity {
    /** Called when the activity is first created. */
    private RunningApplicationAdapter runningApplicationAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RunningAppProcessInfo> RunningApp = am.getRunningAppProcesses();        
        runningApplicationAdapter = new RunningApplicationAdapter(this, RunningApp);
        //setContentView(R.layout.main);
    
        setListAdapter(runningApplicationAdapter);
        ListView lv = getListView();
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener()
        {  
            public void onItemClick(AdapterView<?> parent, View v, int pos, long id) {
                RunningAppProcessInfo x = RunningApp.get(pos);
                String y = x.processName;
                am.killBackgroundProcesses(x.processName); //Error Here!
        }
        });
    }
    }
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   androidworkz    14 年前

    private void initializeKillMethod() {
                try {
                        this.killMethod = ActivityManager.class.getMethod("killBackgroundProcesses", String.class);
                } catch (SecurityException e) {
                        e.printStackTrace();
                } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                }
    
                if (this.killMethod != null) {
                        return;
                }
    
                try {
                        this.killMethod = ActivityManager.class.getMethod("restartPackage", String.class);
                } catch (SecurityException e) {
                        e.printStackTrace();
                } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                }
        }
    

    编辑:记录在案。。。我讨厌StackOverflow上的代码格式化程序,因为它太糟糕了!一半的时间,当你发布代码时,它会杀死所有的格式。

    这是您的解决方案与按钮点击监听。 http://androidworkz.com/2010/07/26/backward-compatible-killbackgroundprocesses/

        2
  •  1
  •   naikus    14 年前

    我看到的唯一原因是您正在使用的仿真器(或设备)与您正在开发的仿真器(或设备)之间的API级别可能不同。i、 e.您正在使用API级别8在API级别低于8的仿真器AVD(或设备)上开发和部署它(可能是API 7)

    API级别7没有此方法

    它只在API级别8中可用