我想获得在我的库项目的一个类中运行时引用/托管我的库的应用程序的上下文.可能吗?如果有,怎么样?
谢谢
更新 我不希望我的用户将参数中的上下文传递给我的库项目,因为我的库项目可能会通过JNI调用,我不知道如何在JNI中获取上下文并将其传递给Java层.
我一直在研究在创建视图时防止上下文/活动内存泄漏的最佳实践,而且我似乎无法找到关于类中静态字段允许或不允许的内容的明确答案.
假设我有这种形式的代码:
public class MyOuterClass extends Activity{
private MyInnerClass;
MyInnerClass = (MyInnerClass) findViewById(<XML call here>);
MyInnerClass.myXInt = 3;
// onCreate(), onResume(), etc.
public static class MyInnerClass extends SurfaceView implements Runnable{
// Safe variables?
private static int myXInt, myYInt;
private static boolean myBoolean;
// Potentially safe?
private static Canvas myCanvas;
// Definitely bad.
private static Context myContext;
public MyInnerClass(Context context){
myContext = context; // This is bad.
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于JVM实际上认为MyInnerClass的ClassLoader是什么,我有点困惑.从技术上讲,由于它是一个SurfaceView对象,一旦应用程序实例化MyInnerClass一次(在View首次膨胀时发生),静态变量似乎应该总是存在,然后保持在那里直到应用程序本身终止.如果是这种情况,是什么阻止Bitmaps和Canvas对象保持打开并填满堆?
我曾经反复重复的唯一一句话就是你不能像我在构造函数中看到的那样泄漏静态上下文,但它永远不会超越它.这真的是你唯一不能做的事情吗?
memory android memory-leaks android-context android-activity
当我在寻找从远程设备获取错误报告的解决方案时,就像iOS中的测试飞行应用程序一样,我在这里找到了acra
针对Android的设备
在基本设置中,他们说我们需要添加一些内容extends Application class
.
到目前为止,在我的项目中,我没有创建这样的课程,当我在SO中搜索这个时,我提出了几个关于这个问题的问题extends Application class
.
我明白他们说的是包含全局变量的Constant类,我是否理解正确的方法.
在我的项目,我用它来创建一个命名为类Constants
,其中包含了一些global variables
如Strings, int, ArrayList
我这个班我用做我的api hits
和json parsings
.这个类可以用作extends Application
.
如果它是相同的,在上面提到的链接,他们说
override the onCreate() method to add the ACRA init statement
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我还没有onCreate
在我的Constant类中创建一个方法.我做对了吗?
我想在对象类中注入应用程序字符串SingletonObject
。我是希尔特的新人,没有任何方法来注入这个
object SinglentonObject{
@AppQualifier
@Inject
lateinit var applicationString: String
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我女儿开发一个简单的应用程序,但我不是专业人士:)
我想知道如何将上下文传递给布尔方法?
我的问题是,当尝试合并下面的两个代码时
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;}
Run Code Online (Sandbox Code Playgroud)
和
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;}
Run Code Online (Sandbox Code Playgroud)
我收到错误是因为我不知道如何传递Context
参数。
android ×5
class ×1
constants ×1
dagger-hilt ×1
extends ×1
memory ×1
memory-leaks ×1
parameters ×1