当我的应用程序在后台时,如何设置剪贴板?
public class Messages {
public void SetMessage(String text) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("NewClip", text);
clipboard.setPrimaryClip(clip);
}
}
}
错误:无法解析getSystemService(java.lang.String)
/* I made a Config class file like so: */
public final class Config {
public static com.dysanix.official.MainActivity MainContext = null;
}
/* And put this in the onCreate of the MainActivity: */
Config.MainContext = this;
/*
* And then using Config.MainContext.getSystemService() in the other
* class works, as long as the UI is visible on the screen.. but as soon as
* I tab out, the code doesn't work anymore.
*/
我也尝试在MainActivity中创建一个“Runnable”并从另一个类调用它,但同样的问题:它有效,直到我选择退出App。我从一个循环的AsyncTask调用该方法,我知道这是有效的,因为控制台会在循环结束时继续打印一条Log消息。
非常感谢任何帮助!
答案 0 :(得分:1)
错误:无法解析getSystemService(java.lang.String)
int firstdigit(int n) {
int x = n;
while(n != 0) {
x = n%10;
n = n/10;
}
return x;
}
是getSystemService()
上的一种方法。将Context
传递到Context
方法,或将该方法移至某些SetMessage()
,Activity
或其他Service
实施方案。然后,在Context
上调用getSystemService()
。
我尝试了多种方法来解决这个问题,其中之一就是:
不要将Context
放在静态字段中。这不仅代表内存泄漏,而且Activity
无论如何都会被破坏。
问题:无法从非ui后台线程设置剪贴板
这里与线程无关。