当我尝试使用proguard混淆应用程序时,我总是会遇到这种错误
Error:ProGuard: [MyApp] java.io.IOException: Can't read [C:\Program Files\Java\jdk1.8.0\jre\lib\rt.jar] (Can't process class [com/oracle/net/Sdp$1.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))
Run Code Online (Sandbox Code Playgroud)
我已经更新了Proguard并检查了项目配置文件,但始终是相同的错误.我正在使用最新版本的Intellij IDEA
我在表单中有一个URL
http://www.mywebsite.com/util/conv?a=1&from=%s&to=%s
Run Code Online (Sandbox Code Playgroud)
并想检查它是否可用.
如果我尝试使用浏览器打开这些链接,链接会将我重定向到错误的请求页面,但是通过代码,我可以获得我需要的数据.
在HTTP请求过程中使用try-catch块非常慢,所以我想知道如何ping一个类似的地址来检查它的服务器是否处于活动状态.
我试过了
boolean reachable = InetAddress.getByName(myLink).isReachable(6000);
Run Code Online (Sandbox Code Playgroud)
但总是回报false.
我也试过了
public static boolean exists(String URLName) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
con.setConnectTimeout(1000);
con.setReadTimeout(1000);
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这会在进程结束时返回正确的值,如果服务器不可用,则位太慢.
编辑
我明白慢慢的原因是什么
a)如果服务器返回一些数据但在完成请求之前中断请求,则忽略超时并停留直到返回Exception导致执行到达catch块的情况,这是导致此方法缓慢的原因,并且我仍然没有找到了有效的解决方案来避免这种情况.
b)如果我启动Android设备并在没有连接的情况下打开应用程序,则正确返回false值,如果应用程序打开且Internet连接处于活动状态且设备丢失其Internet连接,则发生与案例A相同的事情(如果我尝试终止并重新启动应用程序...我不知道为什么,我认为某些东西仍然被缓存)
所有这些似乎与事实相关,Java URLConnection 并未在读取时提供无故障安全超时.看看这个链接上的示例我已经看到使用线程以某种方式中断连接,但如果我添加简单new Thread(new InterruptThread(Thread.currentThread(), con)).start();的样本中的行没有任何变化.
我正在构建一个使用Fragment的应用程序和一个MainActivity在同一个ViewPager中显示不同片段的应用程序来复制典型MVC应用程序的行为.
问题是,我不知道如何以编程方式更新片段以更新ViewPager新的片段更改
例如,我有这个Fragment显示图表,(在我的意图),当我setFragment(int interval, Point[] snodePoint)从主要调用时,图表应该更新ViewPager
public class LineFragment extends Fragment {
static int interval;
static Point snodePoints[];
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_linegraph, container,
false);
Bundle bundle = this.getArguments();
ChartConfig cg = bundle.getParcelable("FragmentData");
snodePoints = cg.getPoints();
interval= cg.getInterval();
Line l = new Line();
for(int i=0; i<snodePoints.length; i++){
LinePoint p = new LinePoint();
Point sp=snodePoints[i];
p.setX(sp.getX());
p.setY(sp.getY());
l.addPoint(p)
}
l.setColor(getResources().getColor(R.color.green));
LineGraph li …Run Code Online (Sandbox Code Playgroud) 在C中,我有一个任务,我必须进行乘法,反演,trasposition,add等等,将巨大的矩阵分配为二维数组(数组的数组).
我找到了gcc旗帜-funroll-all-loops.如果我理解正确,这将自动展开所有循环,而无需程序员的任何努力.
我的问题:
一) GCC是否包括这种优化的各种优化标志-O1, -O2等等?
b)我是否必须使用pragma代码中的任何内容来利用循环展开或自动识别循环?
c)如果展开提高了性能,为什么默认情况下不启用此选项?
d)以最佳方式编译程序的推荐gcc优化标志是什么?(我必须运行这个针对单个CPU系列优化的程序,这与我编译代码的机器相同,实际上我使用march=native和-O2标记)
编辑
似乎存在关于使用展开的争议,在某些情况下可能会降低性能.在我的情况下,有各种方法可以简单地将数学运算嵌套在循环中,用于为大量元素完成的迭代矩阵元素.在这种情况下,展开如何减慢或提高性能?
在我的Android应用程序中,我使用一些数据文件保存了一些文件
FileOutputStream savedList = new FileOutputStream(Path);
Run Code Online (Sandbox Code Playgroud)
位于SD存储中名为myApp的文件夹中
不幸的是,我注意到一些更干净的应用程序,没有很好地实现,也非常受欢迎(例如CleanMaster)每次用户执行临时\垃圾文件清理导致问题时错误地删除文件.
有没有办法以编程方式保护(并取消保护写入)文件以避免这种情况?
如何更改文件权限?
由于未使用文件扩展名来识别文件格式,我如何更改用于确定文件格式的文件元数据,以便这些文件被这些应用程序视为文档?我想这些清理工具的扫描使用一些基于Linux文件格式识别的策略并删除所有目标文件.
继在回答这个问题,我已经更换ActionBarDrawerToggle 支持V4库,在最新的更新(启21)已经被弃用了最新ActionBarDrawerToggle的support-v7 library.
现在,抽屉在Andrid Lollipop Emulator上工作,没有弃用警告但是当我在Jelly Bean真实设备上测试应用程序时,没有显示抽屉和切换抽屉按钮.
这个支持库更新到底是什么?如果不降级到以前的版本,我怎么能解决这个问题?
在这里我的布局
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- content view -->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/drawer_text" />
</RelativeLayout>
<!-- nav drawer -->
<ListView
android:id="@+id/drawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#F3F3F4"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) 我想实现一个搜索功能,打开默认浏览器并搜索传递的字符串
public void searchOnGoogle(String keywords){
---
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用意图过滤器或我必须自己实现一切?
我有一个带有一些值的Spinner
| Monday |
| Thuesday |
| Wednesday |
| Thursday |
| Friday |
| Saturday |
| USER DEFINED |
Run Code Online (Sandbox Code Playgroud)
当用户选择USER DEFINED他可以在对话框中输入自定义值时,假设我得到这个值String userDef="Your choice".
我需要将此String设置为当前项,而不更改微调器选择列表,该列表必须与上述相同,同样当用户再次单击微调器时,类似于Google Analytics Android App,请参阅图像.
未点燃的微调器
点击微调器

我怎么能这样做?
我有一个应用程序可以使用来自不同来源的意图过滤器查看不同类型的视频文件。为了让应用程序在我尝试打开任何视频文件时始终显示为选择,我将此代码放在清单中
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.PICK"/>
<data android:mimeType="video/*" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
所以我可以在主要活动中处理它的应用程序中接收 Uri。
尽管一切似乎都按预期工作,但每次我尝试编辑清单时,Android Studio 都会用红色下划线报告错误标记所有意图过滤器代码missing url。如果我删除,错误就会消失,<data android:mimeType="video/*" />但如果我这样做,该应用程序不仅显示为视频文件的选择。
我ArrayList使用这两种方法在sd卡中保存并加载包含可序列化对象的文件
保存方法
public static void saveUserList(ArrayList<User> userList) {
if (storageAvailable()) {
try {
createFolder();
FileOutputStream userList = new FileOutputStream(
baseDir + File.separator + baseAppDir + File.separator
+ fileName);
ObjectOutputStream oos = new ObjectOutputStream(
userList);
oos.writeObject(userList);
oos.close();
} catch (Exception exc) {
exc.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
加载方法
public static ArrayList<User> loadUserList() {
if (storageAvailable()) {
ArrayList<User> userList = new ArrayList<User>();
try {
FileInputStream userList = new FileInputStream(baseDir
+ File.separator + baseAppDir + File.separator
+ fileName);
ObjectInputStream oos = new …Run Code Online (Sandbox Code Playgroud) android ×9
java ×3
file-io ×2
c ×1
encryption ×1
gcc ×1
gcc4.8 ×1
google-api ×1
http ×1
intentfilter ×1
proguard ×1
spinner ×1