Java错误api级别方法

Java error api level method

我收到一个错误

java.lang.NoSuchMethodError: android.app.Activity.isDestroyed

它只与 运行 在 api 17 或更高版本的设备上有关,这有什么办法吗?

       private WeakReference<Activity> mActivityRef;

    @Override
        public void onFinish() {

            Activity activity = mActivityRef.get();
//            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
//do your thing!

                if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
                    activity.startActivity(new Intent(activity, ListOfAlarms.class));
                    activity.finish();
                }
                mStarted = false;

//            }
//            Intent goBack = new Intent(CountDownAct.this, ListOfAlarms.class);
//            startActivity(goBack);
//            finish();
        }

此 API 仅在 API 级别 17 Check this!

中添加

为避免崩溃,您可以使用以下代码进行验证

if(Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1){
//do your thing!
}

要让它在较低的 API 级别上运行,您可以创建自己的 BaseActivity.java 并添加这样的代码

public class BaseActivity extends Activity {
    private boolean mDestroyed;

    public boolean isDestroyed(){
        return mDestroyed;
    }

    @Override
    protected void onDestroy() {
        mDestroyed = true;
        super.onDestroy();
    }
}

现在,让您的所有活动都扩展此 BaseActivity,如下所示

public class MainActivity extends BaseActivity {
...
}

希望这对您有所帮助!如果对您有用,请接受此答案:)

编辑(OP 添加代码片段后)

首先创建一个 BaseActivity.java 文件,如上所示。 然后,让你所有的活动扩展 BaseActivity 而不是 Activity.

现在,改变

private WeakReference<Activity> mActivityRef;

private WeakReference<BaseActivity> mActivityRef;

并改变

Activity activity = mActivityRef.get();

BaseActivity activity = mActivityRef.get();