【发布时间】:2016-09-26 16:56:37
【问题描述】:
问题:无法从非 ui 后台线程设置剪贴板
我的应用在后台时如何设置剪贴板?
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”并从另一个类调用它,但同样的问题:它可以工作,直到我退出应用程序。我从循环的 AsyncTask 中调用该方法,我知道该方法有效,因为控制台在循环结束时不断打印日志消息。
任何帮助将不胜感激!
【问题讨论】:
-
当你的活动停止时不要让任务继续运行,当某些事情需要运行比活动更长的时间时使用服务,并将后台任务的生命周期与服务的生命周期联系起来。这就是他们的目的。
标签: java android multithreading android-activity clipboard